home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / commctrl.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-02-09  |  288.4 KB  |  9,103 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Run-time Library                         }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1996,98 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11.  
  12. unit Commctrl;
  13.  
  14. {$WEAKPACKAGEUNIT}
  15.  
  16. interface
  17.  
  18. (*$HPPEMIT '' *)
  19. (*$HPPEMIT '#include <CommCtrl.h>' *)
  20. (*$HPPEMIT '' *)
  21.  
  22. { Although the COMMCTRL unit requires the ActiveX unit, COMMCTRL.HPP does }
  23. { not require ActiveX.hpp to compile. Hence the $NOINCLUDE directive.     }
  24. (*$NOINCLUDE ActiveX *)
  25.  
  26. uses Messages, Windows, ActiveX;
  27.  
  28. { From prsht.h -- Interface for the Windows Property Sheet Pages }
  29.  
  30. const
  31.   {$EXTERNALSYM MAXPROPPAGES}
  32.   MAXPROPPAGES = 100;
  33.  
  34.   {$EXTERNALSYM PSP_DEFAULT}
  35.   PSP_DEFAULT             = $00000000;
  36.   {$EXTERNALSYM PSP_DLGINDIRECT}
  37.   PSP_DLGINDIRECT         = $00000001;
  38.   {$EXTERNALSYM PSP_USEHICON}
  39.   PSP_USEHICON            = $00000002;
  40.   {$EXTERNALSYM PSP_USEICONID}
  41.   PSP_USEICONID           = $00000004;
  42.   {$EXTERNALSYM PSP_USETITLE}
  43.   PSP_USETITLE            = $00000008;
  44.   {$EXTERNALSYM PSP_RTLREADING}
  45.   PSP_RTLREADING          = $00000010;
  46.   {$EXTERNALSYM PSP_HASHELP}
  47.   PSP_HASHELP             = $00000020;
  48.   {$EXTERNALSYM PSP_USEREFPARENT}
  49.   PSP_USEREFPARENT        = $00000040;
  50.   {$EXTERNALSYM PSP_USECALLBACK}
  51.   PSP_USECALLBACK         = $00000080;
  52.   {$EXTERNALSYM PSP_PREMATURE}
  53.   PSP_PREMATURE           = $00000400;
  54.   {$EXTERNALSYM PSP_HIDEHEADER}
  55.   PSP_HIDEHEADER          = $00000800;
  56.   {$EXTERNALSYM PSP_USEHEADERTITLE}
  57.   PSP_USEHEADERTITLE      = $00001000;
  58.   {$EXTERNALSYM PSP_USEHEADERSUBTITLE}
  59.   PSP_USEHEADERSUBTITLE   = $00002000;
  60.  
  61.   {$EXTERNALSYM PSPCB_RELEASE}
  62.   PSPCB_RELEASE           = 1;
  63.   {$EXTERNALSYM PSPCB_CREATE}
  64.   PSPCB_CREATE            = 2;
  65.  
  66.   {$EXTERNALSYM PSH_DEFAULT}
  67.   PSH_DEFAULT             = $00000000;
  68.   {$EXTERNALSYM PSH_PROPTITLE}
  69.   PSH_PROPTITLE           = $00000001;
  70.   {$EXTERNALSYM PSH_USEHICON}
  71.   PSH_USEHICON            = $00000002;
  72.   {$EXTERNALSYM PSH_USEICONID}
  73.   PSH_USEICONID           = $00000004;
  74.   {$EXTERNALSYM PSH_PROPSHEETPAGE}
  75.   PSH_PROPSHEETPAGE       = $00000008;
  76.   {$EXTERNALSYM PSH_WIZARDHASFINISH}
  77.   PSH_WIZARDHASFINISH     = $00000010;
  78.   PSH_MULTILINETABS       = $00000010;
  79.   {$EXTERNALSYM PSH_WIZARD}
  80.   PSH_WIZARD              = $00000020;
  81.   {$EXTERNALSYM PSH_USEPSTARTPAGE}
  82.   PSH_USEPSTARTPAGE       = $00000040;
  83.   {$EXTERNALSYM PSH_NOAPPLYNOW}
  84.   PSH_NOAPPLYNOW          = $00000080;
  85.   {$EXTERNALSYM PSH_USECALLBACK}
  86.   PSH_USECALLBACK         = $00000100;
  87.   {$EXTERNALSYM PSH_HASHELP}
  88.   PSH_HASHELP             = $00000200;
  89.   {$EXTERNALSYM PSH_MODELESS}
  90.   PSH_MODELESS            = $00000400;
  91.   {$EXTERNALSYM PSH_RTLREADING}
  92.   PSH_RTLREADING          = $00000800;
  93.   {$EXTERNALSYM PSH_WIZARDCONTEXTHELP}
  94.   PSH_WIZARDCONTEXTHELP   = $00001000;
  95.   {$EXTERNALSYM PSH_WIZARD97}
  96.   PSH_WIZARD97            = $00002000;
  97.   {$EXTERNALSYM PSH_WATERMARK}
  98.   PSH_WATERMARK           = $00008000;
  99.   {$EXTERNALSYM PSH_USEHBMWATERMARK}
  100.   PSH_USEHBMWATERMARK     = $00010000;  // user pass in a hbmWatermark instead of pszbmWatermark
  101.   {$EXTERNALSYM PSH_USEHPLWATERMARK}
  102.   PSH_USEHPLWATERMARK     = $00020000;  //
  103.   {$EXTERNALSYM PSH_STRETCHWATERMARK}
  104.   PSH_STRETCHWATERMARK    = $00040000;  // stretchwatermark also applies for the header
  105.   {$EXTERNALSYM PSH_HEADER}
  106.   PSH_HEADER              = $00080000;
  107.   {$EXTERNALSYM PSH_USEHBMHEADER}
  108.   PSH_USEHBMHEADER        = $00100000;
  109.   {$EXTERNALSYM PSH_USEPAGELANG}
  110.   PSH_USEPAGELANG         = $00200000;  // use frame dialog template matched to page
  111.  
  112.   {$EXTERNALSYM PSCB_INITIALIZED}
  113.   PSCB_INITIALIZED  = 1;
  114.   {$EXTERNALSYM PSCB_PRECREATE}
  115.   PSCB_PRECREATE    = 2;
  116.  
  117.   {$EXTERNALSYM PSN_FIRST}
  118.   PSN_FIRST               = -200;
  119.   {$EXTERNALSYM PSN_LAST}
  120.   PSN_LAST                = -299;
  121.  
  122.   {$EXTERNALSYM PSN_SETACTIVE}
  123.   PSN_SETACTIVE           = PSN_FIRST - 0;
  124.   {$EXTERNALSYM PSN_KILLACTIVE}
  125.   PSN_KILLACTIVE          = PSN_FIRST - 1;
  126.   {$EXTERNALSYM PSN_APPLY}
  127.   PSN_APPLY               = PSN_FIRST - 2;
  128.   {$EXTERNALSYM PSN_RESET}
  129.   PSN_RESET               = PSN_FIRST - 3;
  130.   {$EXTERNALSYM PSN_HELP}
  131.   PSN_HELP                = PSN_FIRST - 5;
  132.   {$EXTERNALSYM PSN_WIZBACK}
  133.   PSN_WIZBACK             = PSN_FIRST - 6;
  134.   {$EXTERNALSYM PSN_WIZNEXT}
  135.   PSN_WIZNEXT             = PSN_FIRST - 7;
  136.   {$EXTERNALSYM PSN_WIZFINISH}
  137.   PSN_WIZFINISH           = PSN_FIRST - 8;
  138.   {$EXTERNALSYM PSN_QUERYCANCEL}
  139.   PSN_QUERYCANCEL         = PSN_FIRST - 9;
  140.   {$EXTERNALSYM PSN_GETOBJECT}
  141.   PSN_GETOBJECT           = PSN_FIRST - 10;
  142.  
  143.   {$EXTERNALSYM PSNRET_NOERROR}
  144.   PSNRET_NOERROR              = 0;
  145.   {$EXTERNALSYM PSNRET_INVALID}
  146.   PSNRET_INVALID              = 1;
  147.   {$EXTERNALSYM PSNRET_INVALID_NOCHANGEPAGE}
  148.   PSNRET_INVALID_NOCHANGEPAGE = 2;
  149.  
  150.   {$EXTERNALSYM PSM_SETCURSEL}
  151.   PSM_SETCURSEL           = WM_USER + 101;
  152.   {$EXTERNALSYM PSM_REMOVEPAGE}
  153.   PSM_REMOVEPAGE          = WM_USER + 102;
  154.   {$EXTERNALSYM PSM_ADDPAGE}
  155.   PSM_ADDPAGE             = WM_USER + 103;
  156.   {$EXTERNALSYM PSM_CHANGED}
  157.   PSM_CHANGED             = WM_USER + 104;
  158.   {$EXTERNALSYM PSM_RESTARTWINDOWS}
  159.   PSM_RESTARTWINDOWS      = WM_USER + 105;
  160.   {$EXTERNALSYM PSM_REBOOTSYSTEM}
  161.   PSM_REBOOTSYSTEM        = WM_USER + 106;
  162.   {$EXTERNALSYM PSM_CANCELTOCLOSE}
  163.   PSM_CANCELTOCLOSE       = WM_USER + 107;
  164.   {$EXTERNALSYM PSM_QUERYSIBLINGS}
  165.   PSM_QUERYSIBLINGS       = WM_USER + 108;
  166.   {$EXTERNALSYM PSM_UNCHANGED}
  167.   PSM_UNCHANGED           = WM_USER + 109;
  168.   {$EXTERNALSYM PSM_APPLY}
  169.   PSM_APPLY               = WM_USER + 110;
  170.   {$EXTERNALSYM PSM_SETTITLE}
  171.   PSM_SETTITLE            = WM_USER + 111;
  172.   {$EXTERNALSYM PSM_SETTITLEW}
  173.   PSM_SETTITLEW           = WM_USER + 120;
  174.   {$EXTERNALSYM PSM_SETWIZBUTTONS}
  175.   PSM_SETWIZBUTTONS       = WM_USER + 112;
  176.   {$EXTERNALSYM PSM_PRESSBUTTON}
  177.   PSM_PRESSBUTTON         = WM_USER + 113;
  178.   {$EXTERNALSYM PSM_SETCURSELID}
  179.   PSM_SETCURSELID         = WM_USER + 114;
  180.   {$EXTERNALSYM PSM_SETFINISHTEXT}
  181.   PSM_SETFINISHTEXT       = WM_USER + 115;
  182.   {$EXTERNALSYM PSM_SETFINISHTEXTW}
  183.   PSM_SETFINISHTEXTW      = WM_USER + 121;
  184.   {$EXTERNALSYM PSM_GETTABCONTROL}
  185.   PSM_GETTABCONTROL       = WM_USER + 116;
  186.   {$EXTERNALSYM PSM_ISDIALOGMESSAGE}
  187.   PSM_ISDIALOGMESSAGE     = WM_USER + 117;
  188.  
  189.   {$EXTERNALSYM PSWIZB_BACK}
  190.   PSWIZB_BACK             = $00000001;
  191.   {$EXTERNALSYM PSWIZB_NEXT}
  192.   PSWIZB_NEXT             = $00000002;
  193.   {$EXTERNALSYM PSWIZB_FINISH}
  194.   PSWIZB_FINISH           = $00000004;
  195.   {$EXTERNALSYM PSWIZB_DISABLEDFINISH}
  196.   PSWIZB_DISABLEDFINISH   = $00000008;
  197.  
  198.   {$EXTERNALSYM PSBTN_BACK}
  199.   PSBTN_BACK              = 0;
  200.   {$EXTERNALSYM PSBTN_NEXT}
  201.   PSBTN_NEXT              = 1;
  202.   {$EXTERNALSYM PSBTN_FINISH}
  203.   PSBTN_FINISH            = 2;
  204.   {$EXTERNALSYM PSBTN_OK}
  205.   PSBTN_OK                = 3;
  206.   {$EXTERNALSYM PSBTN_APPLYNOW}
  207.   PSBTN_APPLYNOW          = 4;
  208.   {$EXTERNALSYM PSBTN_CANCEL}
  209.   PSBTN_CANCEL            = 5;
  210.   {$EXTERNALSYM PSBTN_HELP}
  211.   PSBTN_HELP              = 6;
  212.   {$EXTERNALSYM PSBTN_MAX}
  213.   PSBTN_MAX               = 6;
  214.  
  215.   {$EXTERNALSYM ID_PSRESTARTWINDOWS}
  216.   ID_PSRESTARTWINDOWS     = 2;
  217.   {$EXTERNALSYM ID_PSREBOOTSYSTEM}
  218.   ID_PSREBOOTSYSTEM       = ID_PSRESTARTWINDOWS or 1;
  219.  
  220.   {$EXTERNALSYM WIZ_CXDLG}
  221.   WIZ_CXDLG               = 276;
  222.   {$EXTERNALSYM WIZ_CYDLG}
  223.   WIZ_CYDLG               = 140;
  224.  
  225.   {$EXTERNALSYM WIZ_CXBMP}
  226.   WIZ_CXBMP               = 80;
  227.  
  228.   {$EXTERNALSYM WIZ_BODYX}
  229.   WIZ_BODYX               = 92;
  230.   {$EXTERNALSYM WIZ_BODYCX}
  231.   WIZ_BODYCX              = 184;
  232.  
  233.   {$EXTERNALSYM PROP_SM_CXDLG}
  234.   PROP_SM_CXDLG           = 212;
  235.   {$EXTERNALSYM PROP_SM_CYDLG}
  236.   PROP_SM_CYDLG           = 188;
  237.  
  238.   {$EXTERNALSYM PROP_MED_CXDLG}
  239.   PROP_MED_CXDLG          = 227;
  240.   {$EXTERNALSYM PROP_MED_CYDLG}
  241.   PROP_MED_CYDLG          = 215;
  242.  
  243.   {$EXTERNALSYM PROP_LG_CXDLG}
  244.   PROP_LG_CXDLG           = 252;
  245.   {$EXTERNALSYM PROP_LG_CYDLG}
  246.   PROP_LG_CYDLG           = 218;
  247.  
  248. type
  249.   HPropSheetPage = Pointer;
  250.  
  251.   PPropSheetPageA = ^TPropSheetPageA;
  252.   PPropSheetPageW = ^TPropSheetPageW;
  253.   PPropSheetPage = PPropSheetPageA;
  254.  
  255.   {$EXTERNALSYM LPFNPSPCALLBACKA}
  256.   LPFNPSPCALLBACKA = function(Wnd: HWnd; Msg: Integer;
  257.     PPSP: PPropSheetPageA): Integer stdcall;
  258.   {$EXTERNALSYM LPFNPSPCALLBACKW}
  259.   LPFNPSPCALLBACKW = function(Wnd: HWnd; Msg: Integer;
  260.     PPSP: PPropSheetPageW): Integer stdcall;
  261.   {$EXTERNALSYM LPFNPSPCALLBACK}
  262.   LPFNPSPCALLBACK = LPFNPSPCALLBACKA;
  263.   TFNPSPCallbackA = LPFNPSPCALLBACKA;
  264.   TFNPSPCallbackW = LPFNPSPCALLBACKW;
  265.   TFNPSPCallback = TFNPSPCallbackA;
  266.  
  267.   {$EXTERNALSYM _PROPSHEETPAGEA}
  268.   _PROPSHEETPAGEA = record
  269.     dwSize: Longint;
  270.     dwFlags: Longint;
  271.     hInstance: THandle;
  272.     case Integer of
  273.       0: (
  274.         pszTemplate: PAnsiChar);
  275.       1: (
  276.         pResource: Pointer;
  277.         case Integer of
  278.           0: (
  279.             hIcon: THandle);
  280.           1: (
  281.             pszIcon: PAnsiChar;
  282.             pszTitle: PAnsiChar;
  283.             pfnDlgProc: Pointer;
  284.             lParam: Longint;
  285.             pfnCallback: TFNPSPCallbackA;
  286.             pcRefParent: PInteger;
  287.             pszHeaderTitle: PAnsiChar;      // this is displayed in the header
  288.             pszHeaderSubTitle: PAnsiChar)); //
  289.   end;
  290.   {$EXTERNALSYM _PROPSHEETPAGEW}
  291.   _PROPSHEETPAGEW = record
  292.     dwSize: Longint;
  293.     dwFlags: Longint;
  294.     hInstance: THandle;
  295.     case Integer of
  296.       0: (
  297.         pszTemplate: PWideChar);
  298.       1: (
  299.         pResource: Pointer;
  300.         case Integer of
  301.           0: (
  302.             hIcon: THandle);
  303.           1: (
  304.             pszIcon: PWideChar;
  305.             pszTitle: PWideChar;
  306.             pfnDlgProc: Pointer;
  307.             lParam: Longint;
  308.             pfnCallback: TFNPSPCallbackW;
  309.             pcRefParent: PInteger;
  310.             pszHeaderTitle: PWideChar;      // this is displayed in the header
  311.             pszHeaderSubTitle: PWideChar)); //
  312.   end;
  313.   {$EXTERNALSYM _PROPSHEETPAGE}
  314.   _PROPSHEETPAGE = _PROPSHEETPAGEA;
  315.   TPropSheetPageA = _PROPSHEETPAGEA;
  316.   TPropSheetPageW = _PROPSHEETPAGEW;
  317.   TPropSheetPage = TPropSheetPageA;
  318.   {$EXTERNALSYM PROPSHEETPAGEA}
  319.   PROPSHEETPAGEA = _PROPSHEETPAGEA;
  320.   {$EXTERNALSYM PROPSHEETPAGEW}
  321.   PROPSHEETPAGEW = _PROPSHEETPAGEW;
  322.   {$EXTERNALSYM PROPSHEETPAGE}
  323.   PROPSHEETPAGE = PROPSHEETPAGEA;
  324.  
  325.  
  326.   {$EXTERNALSYM PFNPROPSHEETCALLBACK}
  327.   PFNPROPSHEETCALLBACK = function(Wnd: HWnd; Msg: Integer;
  328.     LParam: Integer): Integer stdcall;
  329.   TFNPropSheetCallback = PFNPROPSHEETCALLBACK;
  330.  
  331.   PPropSheetHeaderA = ^TPropSheetHeaderA;
  332.   PPropSheetHeaderW = ^TPropSheetHeaderW;
  333.   PPropSheetHeader = PPropSheetHeaderA;
  334.   {$EXTERNALSYM _PROPSHEETHEADERA}
  335.   _PROPSHEETHEADERA = record
  336.     dwSize: Longint;
  337.     dwFlags: Longint;
  338.     hwndParent: HWnd;
  339.     hInstance: THandle;
  340.     case Integer of
  341.       0: (
  342.     hIcon: THandle);
  343.       1: (
  344.     pszIcon: PAnsiChar;
  345.     pszCaption: PAnsiChar;
  346.     nPages: Integer;
  347.     case Integer of
  348.       0: (
  349.         nStartPage: Integer);
  350.       1: (
  351.         pStartPage: PAnsiChar;
  352.         case Integer of
  353.           0: (
  354.         ppsp: PPropSheetPageA);
  355.           1: (
  356.         phpage: Pointer;
  357.         pfnCallback: TFNPropSheetCallback;
  358.                 case Integer of
  359.                   0: (
  360.                     hbmWatermark: HBITMAP);
  361.                   1: (
  362.                     pszbmWatermark: PAnsiChar;
  363.                     hplWatermark: HPALETTE;
  364.                     // Header bitmap shares the palette with watermark
  365.                     case Integer of
  366.                       0: (
  367.                         hbmHeader: HBITMAP);
  368.                       1: (
  369.                         pszbmHeader: PAnsiChar)))));
  370.   end;
  371.   {$EXTERNALSYM _PROPSHEETHEADERW}
  372.   _PROPSHEETHEADERW = record
  373.     dwSize: Longint;
  374.     dwFlags: Longint;
  375.     hwndParent: HWnd;
  376.     hInstance: THandle;
  377.     case Integer of
  378.       0: (
  379.     hIcon: THandle);
  380.       1: (
  381.     pszIcon: PWideChar;
  382.     pszCaption: PWideChar;
  383.     nPages: Integer;
  384.     case Integer of
  385.       0: (
  386.         nStartPage: Integer);
  387.       1: (
  388.         pStartPage: PWideChar;
  389.         case Integer of
  390.           0: (
  391.         ppsp: PPropSheetPageW);
  392.           1: (
  393.         phpage: Pointer;
  394.         pfnCallback: TFNPropSheetCallback;
  395.                 case Integer of
  396.                   0: (
  397.                     hbmWatermark: HBITMAP);
  398.                   1: (
  399.                     pszbmWatermark: PWideChar;
  400.                     hplWatermark: HPALETTE;
  401.                     // Header bitmap shares the palette with watermark
  402.                     case Integer of
  403.                       0: (
  404.                         hbmHeader: HBITMAP);
  405.                       1: (
  406.                         pszbmHeader: PWideChar)))));
  407.   end;
  408.   {$EXTERNALSYM _PROPSHEETHEADER}
  409.   _PROPSHEETHEADER = _PROPSHEETHEADERA;
  410.   TPropSheetHeaderA = _PROPSHEETHEADERA;
  411.   TPropSheetHeaderW = _PROPSHEETHEADERW;
  412.   TPropSheetHeader = TPropSheetHeaderA;
  413.  
  414.   {$EXTERNALSYM LPFNADDPROPSHEETPAGE}
  415.   LPFNADDPROPSHEETPAGE = function(hPSP: HPropSheetPage;
  416.     lParam: Longint): BOOL stdcall;
  417.   TFNAddPropSheetPage = LPFNADDPROPSHEETPAGE;
  418.  
  419.   {$EXTERNALSYM LPFNADDPROPSHEETPAGES}
  420.   LPFNADDPROPSHEETPAGES = function(lpvoid: Pointer; pfn: TFNAddPropSheetPage;
  421.     lParam: Longint): BOOL stdcall;
  422.   TFNAddPropSheetPages = LPFNADDPROPSHEETPAGES;
  423.  
  424. {$EXTERNALSYM CreatePropertySheetPageA}
  425. function CreatePropertySheetPageA(var PSP: TPropSheetPageA): HPropSheetPage; stdcall;
  426. {$EXTERNALSYM CreatePropertySheetPageW}
  427. function CreatePropertySheetPageW(var PSP: TPropSheetPageW): HPropSheetPage; stdcall;
  428. {$EXTERNALSYM CreatePropertySheetPage}
  429. function CreatePropertySheetPage(var PSP: TPropSheetPage): HPropSheetPage; stdcall;
  430. {$EXTERNALSYM DestroyPropertySheetPage}
  431. function DestroyPropertySheetPage(hPSP: HPropSheetPage): BOOL; stdcall;
  432. {$EXTERNALSYM PropertySheetA}
  433. function PropertySheetA(var PSH: TPropSheetHeaderA): Integer; stdcall;
  434. {$EXTERNALSYM PropertySheetW}
  435. function PropertySheetW(var PSH: TPropSheetHeaderW): Integer; stdcall;
  436. {$EXTERNALSYM PropertySheet}
  437. function PropertySheet(var PSH: TPropSheetHeader): Integer; stdcall;
  438.  
  439. { From commctrl.h }
  440.  
  441. type
  442.   {$EXTERNALSYM tagINITCOMMONCONTROLSEX}
  443.   tagINITCOMMONCONTROLSEX = packed record
  444.     dwSize: DWORD;             // size of this structure
  445.     dwICC: DWORD;              // flags indicating which classes to be initialized
  446.   end;
  447.   PInitCommonControlsEx = ^TInitCommonControlsEx;
  448.   TInitCommonControlsEx = tagINITCOMMONCONTROLSEX;
  449.   
  450. const
  451.   {$EXTERNALSYM ICC_LISTVIEW_CLASSES}
  452.   ICC_LISTVIEW_CLASSES   = $00000001; // listview, header
  453.   {$EXTERNALSYM ICC_TREEVIEW_CLASSES}
  454.   ICC_TREEVIEW_CLASSES   = $00000002; // treeview, tooltips
  455.   {$EXTERNALSYM ICC_BAR_CLASSES}
  456.   ICC_BAR_CLASSES        = $00000004; // toolbar, statusbar, trackbar, tooltips
  457.   {$EXTERNALSYM ICC_TAB_CLASSES}
  458.   ICC_TAB_CLASSES        = $00000008; // tab, tooltips
  459.   {$EXTERNALSYM ICC_UPDOWN_CLASS}
  460.   ICC_UPDOWN_CLASS       = $00000010; // updown
  461.   {$EXTERNALSYM ICC_PROGRESS_CLASS}
  462.   ICC_PROGRESS_CLASS     = $00000020; // progress
  463.   {$EXTERNALSYM ICC_HOTKEY_CLASS}
  464.   ICC_HOTKEY_CLASS       = $00000040; // hotkey
  465.   {$EXTERNALSYM ICC_ANIMATE_CLASS}
  466.   ICC_ANIMATE_CLASS      = $00000080; // animate
  467.   {$EXTERNALSYM ICC_WIN95_CLASSES}
  468.   ICC_WIN95_CLASSES      = $000000FF;
  469.   {$EXTERNALSYM ICC_DATE_CLASSES}
  470.   ICC_DATE_CLASSES       = $00000100; // month picker, date picker, time picker, updown
  471.   {$EXTERNALSYM ICC_USEREX_CLASSES}
  472.   ICC_USEREX_CLASSES     = $00000200; // comboex
  473.   {$EXTERNALSYM ICC_COOL_CLASSES}
  474.   ICC_COOL_CLASSES       = $00000400; // rebar (coolbar) control
  475.   {$EXTERNALSYM ICC_INTERNET_CLASSES}
  476.   ICC_INTERNET_CLASSES   = $00000800;
  477.   {$EXTERNALSYM ICC_PAGESCROLLER_CLASS}
  478.   ICC_PAGESCROLLER_CLASS = $00001000; // page scroller
  479.   {$EXTERNALSYM ICC_NATIVEFNTCTL_CLASS}
  480.   ICC_NATIVEFNTCTL_CLASS = $00002000; // native font control
  481.  
  482. {$EXTERNALSYM InitCommonControls}
  483. procedure InitCommonControls; stdcall;
  484. {$EXTERNALSYM InitCommonControlsEx}
  485. function InitCommonControlsEx(var ICC: TInitCommonControlsEx): Bool; { Re-defined below }
  486.  
  487. const
  488.   {$EXTERNALSYM IMAGE_BITMAP}
  489.   IMAGE_BITMAP = 0;
  490.  
  491. const
  492.   {$EXTERNALSYM ODT_HEADER}
  493.   ODT_HEADER              = 100;
  494.   {$EXTERNALSYM ODT_TAB}
  495.   ODT_TAB                 = 101;
  496.   {$EXTERNALSYM ODT_LISTVIEW}
  497.   ODT_LISTVIEW            = 102;
  498.  
  499.  
  500. { ====== Ranges for control message IDs ======================= }
  501.  
  502. const
  503.   {$EXTERNALSYM LVM_FIRST}
  504.   LVM_FIRST               = $1000;      { ListView messages }
  505.   {$EXTERNALSYM TV_FIRST}
  506.   TV_FIRST                = $1100;      { TreeView messages }
  507.   {$EXTERNALSYM HDM_FIRST}
  508.   HDM_FIRST               = $1200;      { Header messages }
  509.   {$EXTERNALSYM TCM_FIRST}
  510.   TCM_FIRST               = $1300;      { Tab control messages }
  511.   {$EXTERNALSYM PGM_FIRST}
  512.   PGM_FIRST               = $1400;      { Pager control messages }
  513.   {$EXTERNALSYM CCM_FIRST}
  514.   CCM_FIRST               = $2000;      { Common control shared messages }
  515.  
  516.   {$EXTERNALSYM CCM_SETBKCOLOR}
  517.   CCM_SETBKCOLOR          = CCM_FIRST + 1; // lParam is bkColor
  518.  
  519. type
  520.   {$EXTERNALSYM tagCOLORSCHEME}
  521.   tagCOLORSCHEME = packed record
  522.     dwSize: DWORD;
  523.     clrBtnHighlight: COLORREF;    // highlight color
  524.     clrBtnShadow: COLORREF;       // shadow color
  525.   end;
  526.   PColorScheme = ^TColorScheme;
  527.   TColorScheme = tagCOLORSCHEME;
  528.  
  529. const
  530.   {$EXTERNALSYM CCM_SETCOLORSCHEME}
  531.   CCM_SETCOLORSCHEME      = CCM_FIRST + 2; // lParam is color scheme
  532.   {$EXTERNALSYM CCM_GETCOLORSCHEME}
  533.   CCM_GETCOLORSCHEME      = CCM_FIRST + 3; // fills in COLORSCHEME pointed to by lParam
  534.   {$EXTERNALSYM CCM_GETDROPTARGET}
  535.   CCM_GETDROPTARGET       = CCM_FIRST + 4;
  536.   {$EXTERNALSYM CCM_SETUNICODEFORMAT}
  537.   CCM_SETUNICODEFORMAT    = CCM_FIRST + 5;
  538.   {$EXTERNALSYM CCM_GETUNICODEFORMAT}
  539.   CCM_GETUNICODEFORMAT    = CCM_FIRST + 6;
  540.  
  541.   {$EXTERNALSYM INFOTIPSIZE}
  542.   INFOTIPSIZE = 1024;  // for tooltips
  543.  
  544. { ====== WM_NOTIFY codes (NMHDR.code values) ================== }
  545.  
  546. const
  547.   {$EXTERNALSYM NM_FIRST}
  548.   NM_FIRST                 = 0-  0;       { generic to all controls }
  549.   {$EXTERNALSYM NM_LAST}
  550.   NM_LAST                  = 0- 99;
  551.  
  552.   {$EXTERNALSYM LVN_FIRST}
  553.   LVN_FIRST                = 0-100;       { listview }
  554.   {$EXTERNALSYM LVN_LAST}
  555.   LVN_LAST                 = 0-199;
  556.  
  557.   {$EXTERNALSYM HDN_FIRST}
  558.   HDN_FIRST                = 0-300;       { header }
  559.   {$EXTERNALSYM HDN_LAST}
  560.   HDN_LAST                 = 0-399;
  561.  
  562.   {$EXTERNALSYM TVN_FIRST}
  563.   TVN_FIRST                = 0-400;       { treeview }
  564.   {$EXTERNALSYM TVN_LAST}
  565.   TVN_LAST                 = 0-499;
  566.  
  567.   {$EXTERNALSYM TTN_FIRST}
  568.   TTN_FIRST                = 0-520;       { tooltips }
  569.   {$EXTERNALSYM TTN_LAST}
  570.   TTN_LAST                 = 0-549;
  571.  
  572.   {$EXTERNALSYM TCN_FIRST}
  573.   TCN_FIRST                = 0-550;       { tab control }
  574.   {$EXTERNALSYM TCN_LAST}
  575.   TCN_LAST                 = 0-580;
  576.  
  577. { Shell reserved           (0-580) -  (0-589) }
  578.  
  579.   {$EXTERNALSYM CDN_FIRST}
  580.   CDN_FIRST                = 0-601;       { common dialog (new) }
  581.   {$EXTERNALSYM CDN_LAST}
  582.   CDN_LAST                 = 0-699;
  583.  
  584.   {$EXTERNALSYM TBN_FIRST}
  585.   TBN_FIRST                = 0-700;       { toolbar }
  586.   {$EXTERNALSYM TBN_LAST}
  587.   TBN_LAST                 = 0-720;
  588.  
  589.   {$EXTERNALSYM UDN_FIRST}
  590.   UDN_FIRST                = 0-721;       { updown }
  591.   {$EXTERNALSYM UDN_LAST}
  592.   UDN_LAST                 = 0-740;
  593.  
  594.   {$EXTERNALSYM MCN_FIRST}
  595.   MCN_FIRST                = 0-750;       { monthcal }
  596.   {$EXTERNALSYM MCN_LAST}
  597.   MCN_LAST                 = 0-759;
  598.  
  599.   {$EXTERNALSYM DTN_FIRST}
  600.   DTN_FIRST                = 0-760;       { datetimepick }
  601.   {$EXTERNALSYM DTN_LAST}
  602.   DTN_LAST                 = 0-799;
  603.  
  604.   {$EXTERNALSYM CBEN_FIRST}
  605.   CBEN_FIRST               = 0-800;       { combo box ex }
  606.   {$EXTERNALSYM CBEN_LAST}
  607.   CBEN_LAST                = 0-830;
  608.  
  609.   {$EXTERNALSYM RBN_FIRST}
  610.   RBN_FIRST                = 0-831;       { coolbar }
  611.   {$EXTERNALSYM RBN_LAST}
  612.   RBN_LAST                 = 0-859;
  613.  
  614.   {$EXTERNALSYM IPN_FIRST}
  615.   IPN_FIRST               = 0-860;       { internet address }
  616.   {$EXTERNALSYM IPN_LAST}
  617.   IPN_LAST                = 0-879;       { internet address }
  618.  
  619.   {$EXTERNALSYM SBN_FIRST}
  620.   SBN_FIRST               = 0-880;       { status bar }
  621.   {$EXTERNALSYM SBN_LAST}
  622.   SBN_LAST                = 0-899;
  623.  
  624.   {$EXTERNALSYM PGN_FIRST}
  625.   PGN_FIRST               = 0-900;       { Pager Control }
  626.   {$EXTERNALSYM PGN_LAST}
  627.   PGN_LAST                = 0-950;
  628.  
  629.   {$EXTERNALSYM MSGF_COMMCTRL_BEGINDRAG}
  630.   MSGF_COMMCTRL_BEGINDRAG     = $4200;
  631.   {$EXTERNALSYM MSGF_COMMCTRL_SIZEHEADER}
  632.   MSGF_COMMCTRL_SIZEHEADER    = $4201;
  633.   {$EXTERNALSYM MSGF_COMMCTRL_DRAGSELECT}
  634.   MSGF_COMMCTRL_DRAGSELECT    = $4202;
  635.   {$EXTERNALSYM MSGF_COMMCTRL_TOOLBARCUST}
  636.   MSGF_COMMCTRL_TOOLBARCUST   = $4203;
  637.  
  638.  
  639. { ====== Generic WM_NOTIFY notification codes ================= }
  640.  
  641. const
  642.   {$EXTERNALSYM NM_OUTOFMEMORY}
  643.   NM_OUTOFMEMORY           = NM_FIRST-1;
  644.   {$EXTERNALSYM NM_CLICK}
  645.   NM_CLICK                 = NM_FIRST-2;
  646.   {$EXTERNALSYM NM_DBLCLK}
  647.   NM_DBLCLK                = NM_FIRST-3;
  648.   {$EXTERNALSYM NM_RETURN}
  649.   NM_RETURN                = NM_FIRST-4;
  650.   {$EXTERNALSYM NM_RCLICK}
  651.   NM_RCLICK                = NM_FIRST-5;
  652.   {$EXTERNALSYM NM_RDBLCLK}
  653.   NM_RDBLCLK               = NM_FIRST-6;
  654.   {$EXTERNALSYM NM_SETFOCUS}
  655.   NM_SETFOCUS              = NM_FIRST-7;
  656.   {$EXTERNALSYM NM_KILLFOCUS}
  657.   NM_KILLFOCUS             = NM_FIRST-8;
  658.   {$EXTERNALSYM NM_CUSTOMDRAW}
  659.   NM_CUSTOMDRAW            = NM_FIRST-12;
  660.   {$EXTERNALSYM NM_HOVER}
  661.   NM_HOVER                 = NM_FIRST-13;
  662.   {$EXTERNALSYM NM_NCHITTEST}
  663.   NM_NCHITTEST             = NM_FIRST-14;   // uses NMMOUSE struct
  664.   {$EXTERNALSYM NM_KEYDOWN}
  665.   NM_KEYDOWN               = NM_FIRST-15;   // uses NMKEY struct
  666.   {$EXTERNALSYM NM_RELEASEDCAPTURE}
  667.   NM_RELEASEDCAPTURE       = NM_FIRST-16;
  668.   {$EXTERNALSYM NM_SETCURSOR}
  669.   NM_SETCURSOR             = NM_FIRST-17;   // uses NMMOUSE struct
  670.   {$EXTERNALSYM NM_CHAR}
  671.   NM_CHAR                  = NM_FIRST-18;   // uses NMCHAR struct
  672.  
  673. type
  674.   {$EXTERNALSYM tagNMMOUSE}
  675.   tagNMMOUSE = packed record
  676.     hdr: TNMHdr;
  677.     dwItemSpec: DWORD;
  678.     dwItemData: DWORD;
  679.     pt: TPoint;
  680.     dwHitInfo: DWORD; // any specifics about where on the item or control the mouse is
  681.   end;
  682.   PNMMouse = ^TNMMouse;
  683.   TNMMouse = tagNMMOUSE;
  684.  
  685.   PNMClick = ^TNMClick;
  686.   TNMClick = tagNMMOUSE;
  687.  
  688.   // Generic structure to request an object of a specific type.
  689.   {$EXTERNALSYM tagNMOBJECTNOTIFY}
  690.   tagNMOBJECTNOTIFY = packed record
  691.     hdr: TNMHdr;
  692.     iItem: Integer;
  693.     piid: PGUID;
  694.     pObject: Pointer;
  695.     hResult: HRESULT;
  696.     dwFlags: DWORD;    // control specific flags (hints as to where in iItem it hit)
  697.   end;
  698.   PNMObjectNotify = ^TNMObjectNotify;
  699.   TNMObjectNotify = tagNMOBJECTNOTIFY;
  700.  
  701.   // Generic structure for a key
  702.   {$EXTERNALSYM tagNMKEY}
  703.   tagNMKEY = packed record
  704.     hdr: TNMHdr;
  705.     nVKey: UINT;
  706.     uFlags: UINT;
  707.   end;
  708.   PNMKey = ^TNMKey;
  709.   TNMKey = tagNMKEY;
  710.  
  711.   // Generic structure for a character
  712.   {$EXTERNALSYM tagNMCHAR}
  713.   tagNMCHAR = packed record
  714.     hdr: TNMHdr;
  715.     ch: UINT;
  716.     dwItemPrev: DWORD;     // Item previously selected
  717.     dwItemNext: DWORD;     // Item to be selected
  718.   end;
  719.   PNMChar = ^TNMChar;
  720.   TNMChar = tagNMCHAR;
  721.  
  722. { ==================== CUSTOM DRAW ========================================== }
  723.  
  724. const
  725.   // custom draw return flags
  726.   // values under 0x00010000 are reserved for global custom draw values.
  727.   // above that are for specific controls
  728.   {$EXTERNALSYM CDRF_DODEFAULT}
  729.   CDRF_DODEFAULT          = $00000000;
  730.   {$EXTERNALSYM CDRF_NEWFONT}
  731.   CDRF_NEWFONT            = $00000002;
  732.   {$EXTERNALSYM CDRF_SKIPDEFAULT}
  733.   CDRF_SKIPDEFAULT        = $00000004;
  734.  
  735.   {$EXTERNALSYM CDRF_NOTIFYPOSTPAINT}
  736.   CDRF_NOTIFYPOSTPAINT    = $00000010;
  737.   {$EXTERNALSYM CDRF_NOTIFYITEMDRAW}
  738.   CDRF_NOTIFYITEMDRAW     = $00000020;
  739.   {$EXTERNALSYM CDRF_NOTIFYSUBITEMDRAW}
  740.   CDRF_NOTIFYSUBITEMDRAW  = $00000020;  // flags are the same, we can distinguish by context
  741.   {$EXTERNALSYM CDRF_NOTIFYPOSTERASE}
  742.   CDRF_NOTIFYPOSTERASE    = $00000040;
  743.  
  744.   // drawstage flags
  745.   // values under = $00010000 are reserved for global custom draw values.
  746.   // above that are for specific controls
  747.   {$EXTERNALSYM CDDS_PREPAINT}
  748.   CDDS_PREPAINT           = $00000001;
  749.   {$EXTERNALSYM CDDS_POSTPAINT}
  750.   CDDS_POSTPAINT          = $00000002;
  751.   {$EXTERNALSYM CDDS_PREERASE}
  752.   CDDS_PREERASE           = $00000003;
  753.   {$EXTERNALSYM CDDS_POSTERASE}
  754.   CDDS_POSTERASE          = $00000004;
  755.   // the = $000010000 bit means it's individual item specific
  756.   {$EXTERNALSYM CDDS_ITEM}
  757.   CDDS_ITEM               = $00010000;
  758.   {$EXTERNALSYM CDDS_ITEMPREPAINT}
  759.   CDDS_ITEMPREPAINT       = CDDS_ITEM or CDDS_PREPAINT;
  760.   {$EXTERNALSYM CDDS_ITEMPOSTPAINT}
  761.   CDDS_ITEMPOSTPAINT      = CDDS_ITEM or CDDS_POSTPAINT;
  762.   {$EXTERNALSYM CDDS_ITEMPREERASE}
  763.   CDDS_ITEMPREERASE       = CDDS_ITEM or CDDS_PREERASE;
  764.   {$EXTERNALSYM CDDS_ITEMPOSTERASE}
  765.   CDDS_ITEMPOSTERASE      = CDDS_ITEM or CDDS_POSTERASE;
  766.   {$EXTERNALSYM CDDS_SUBITEM}
  767.   CDDS_SUBITEM            = $00020000;
  768.  
  769.   // itemState flags
  770.   {$EXTERNALSYM CDIS_SELECTED}
  771.   CDIS_SELECTED       = $0001;
  772.   {$EXTERNALSYM CDIS_GRAYED}
  773.   CDIS_GRAYED         = $0002;
  774.   {$EXTERNALSYM CDIS_DISABLED}
  775.   CDIS_DISABLED       = $0004;
  776.   {$EXTERNALSYM CDIS_CHECKED}
  777.   CDIS_CHECKED        = $0008;
  778.   {$EXTERNALSYM CDIS_FOCUS}
  779.   CDIS_FOCUS          = $0010;
  780.   {$EXTERNALSYM CDIS_DEFAULT}
  781.   CDIS_DEFAULT        = $0020;
  782.   {$EXTERNALSYM CDIS_HOT}
  783.   CDIS_HOT            = $0040;
  784.   {$EXTERNALSYM CDIS_MARKED}
  785.   CDIS_MARKED         = $0080;
  786.   {$EXTERNALSYM CDIS_INDETERMINATE}
  787.   CDIS_INDETERMINATE  = $0100;
  788.  
  789. type
  790.   {$EXTERNALSYM tagNMCUSTOMDRAWINFO}
  791.   tagNMCUSTOMDRAWINFO = packed record
  792.     hdr: TNMHdr;
  793.     dwDrawStage: DWORD;
  794.     hdc: HDC;
  795.     rc: TRect;
  796.     dwItemSpec: DWORD;  // this is control specific, but it's how to specify an item.  valid only with CDDS_ITEM bit set
  797.     uItemState: UINT;
  798.     lItemlParam: LPARAM;
  799.   end;
  800.   PNMCustomDraw = ^TNMCustomDraw;
  801.   TNMCustomDraw = tagNMCUSTOMDRAWINFO;
  802.  
  803.   {$EXTERNALSYM tagNMTTCUSTOMDRAW}
  804.   tagNMTTCUSTOMDRAW = packed record
  805.     nmcd: TNMCustomDraw;
  806.     uDrawFlags: UINT;
  807.   end;
  808.   PNMTTCustomDraw = ^TNMTTCustomDraw;
  809.   TNMTTCustomDraw = tagNMTTCUSTOMDRAW;
  810.  
  811. { ====== IMAGE LIST =========================================== }
  812.  
  813. const
  814.   {$EXTERNALSYM CLR_NONE}
  815.   CLR_NONE                = $FFFFFFFF;
  816.   {$EXTERNALSYM CLR_DEFAULT}
  817.   CLR_DEFAULT             = $FF000000;
  818.  
  819. type
  820.   {$EXTERNALSYM HIMAGELIST}
  821.   HIMAGELIST = THandle;
  822.  
  823.   {$EXTERNALSYM _IMAGELISTDRAWPARAMS}
  824.   _IMAGELISTDRAWPARAMS = packed record
  825.     cbSize: DWORD;
  826.     himl: HIMAGELIST;
  827.     i: Integer;
  828.     hdcDst: HDC;
  829.     x: Integer;
  830.     y: Integer;
  831.     cx: Integer;
  832.     cy: Integer;
  833.     xBitmap: Integer;        // x offest from the upperleft of bitmap
  834.     yBitmap: Integer;        // y offset from the upperleft of bitmap
  835.     rgbBk: COLORREF;
  836.     rgbFg: COLORREF;
  837.     fStyle: UINT;
  838.     dwRop: DWORD;
  839.   end;
  840.   PImageListDrawParams = ^TImageListDrawParams;
  841.   TImageListDrawParams = _IMAGELISTDRAWPARAMS;
  842.  
  843. const
  844.   {$EXTERNALSYM ILC_MASK}
  845.   ILC_MASK                = $0001;
  846.   {$EXTERNALSYM ILC_COLOR}
  847.   ILC_COLOR               = $00FE;
  848.   {$EXTERNALSYM ILC_COLORDDB}
  849.   ILC_COLORDDB            = $00FE;
  850.   {$EXTERNALSYM ILC_COLOR4}
  851.   ILC_COLOR4              = $0004;
  852.   {$EXTERNALSYM ILC_COLOR8}
  853.   ILC_COLOR8              = $0008;
  854.   {$EXTERNALSYM ILC_COLOR16}
  855.   ILC_COLOR16             = $0010;
  856.   {$EXTERNALSYM ILC_COLOR24}
  857.   ILC_COLOR24             = $0018;
  858.   {$EXTERNALSYM ILC_COLOR32}
  859.   ILC_COLOR32             = $0020;
  860.   {$EXTERNALSYM ILC_PALETTE}
  861.   ILC_PALETTE             = $0800;
  862.  
  863. {$EXTERNALSYM ImageList_Create}
  864. function ImageList_Create(CX, CY: Integer; Flags: UINT;
  865.   Initial, Grow: Integer): HIMAGELIST; stdcall;
  866. {$EXTERNALSYM ImageList_Destroy}
  867. function ImageList_Destroy(ImageList: HIMAGELIST): Bool; stdcall;
  868. {$EXTERNALSYM ImageList_GetImageCount}
  869. function ImageList_GetImageCount(ImageList: HIMAGELIST): Integer; stdcall;
  870. {$EXTERNALSYM ImageList_SetImageCount}
  871. function ImageList_SetImageCount(himl: HIMAGELIST; uNewCount: UINT): Integer; stdcall;
  872. {$EXTERNALSYM ImageList_Add}
  873. function ImageList_Add(ImageList: HIMAGELIST; Image, Mask: HBitmap): Integer; stdcall;
  874. {$EXTERNALSYM ImageList_ReplaceIcon}
  875. function ImageList_ReplaceIcon(ImageList: HIMAGELIST; Index: Integer;
  876.   Icon: HIcon): Integer; stdcall;
  877. {$EXTERNALSYM ImageList_SetBkColor}
  878. function ImageList_SetBkColor(ImageList: HIMAGELIST; ClrBk: TColorRef): TColorRef; stdcall;
  879. {$EXTERNALSYM ImageList_GetBkColor}
  880. function ImageList_GetBkColor(ImageList: HIMAGELIST): TColorRef; stdcall;
  881. {$EXTERNALSYM ImageList_SetOverlayImage}
  882. function ImageList_SetOverlayImage(ImageList: HIMAGELIST; Image: Integer;
  883.   Overlay: Integer): Bool; stdcall;
  884.  
  885. {$EXTERNALSYM ImageList_AddIcon}
  886. function ImageList_AddIcon(ImageList: HIMAGELIST; Icon: HIcon): Integer;
  887.  
  888. const
  889.   {$EXTERNALSYM ILD_NORMAL}
  890.   ILD_NORMAL              = $0000;
  891.   {$EXTERNALSYM ILD_TRANSPARENT}
  892.   ILD_TRANSPARENT         = $0001;
  893.   {$EXTERNALSYM ILD_MASK}
  894.   ILD_MASK                = $0010;
  895.   {$EXTERNALSYM ILD_IMAGE}
  896.   ILD_IMAGE               = $0020;
  897.   {$EXTERNALSYM ILD_ROP}
  898.   ILD_ROP                 = $0040;
  899.   {$EXTERNALSYM ILD_BLEND25}
  900.   ILD_BLEND25             = $0002;
  901.   {$EXTERNALSYM ILD_BLEND50}
  902.   ILD_BLEND50             = $0004;
  903.   {$EXTERNALSYM ILD_OVERLAYMASK}
  904.   ILD_OVERLAYMASK         = $0F00;
  905.  
  906. {$EXTERNALSYM IndexToOverlayMask}
  907. function IndexToOverlayMask(Index: Integer): Integer;
  908.  
  909. const
  910.   {$EXTERNALSYM ILD_SELECTED}
  911.   ILD_SELECTED            = ILD_BLEND50;
  912.   {$EXTERNALSYM ILD_FOCUS}
  913.   ILD_FOCUS               = ILD_BLEND25;
  914.   {$EXTERNALSYM ILD_BLEND}
  915.   ILD_BLEND               = ILD_BLEND50;
  916.   {$EXTERNALSYM CLR_HILIGHT}
  917.   CLR_HILIGHT             = CLR_DEFAULT;
  918.  
  919. {$EXTERNALSYM ImageList_Draw}
  920. function ImageList_Draw(ImageList: HIMAGELIST; Index: Integer;
  921.   Dest: HDC; X, Y: Integer; Style: UINT): Bool; stdcall;
  922.  
  923. {$EXTERNALSYM ImageList_Replace}
  924. function ImageList_Replace(ImageList: HIMAGELIST; Index: Integer;
  925.   Image, Mask: HBitmap): Bool; stdcall;
  926. {$EXTERNALSYM ImageList_AddMasked}
  927. function ImageList_AddMasked(ImageList: HIMAGELIST; Image: HBitmap;
  928.   Mask: TColorRef): Integer; stdcall;
  929. {$EXTERNALSYM ImageList_DrawEx}
  930. function ImageList_DrawEx(ImageList: HIMAGELIST; Index: Integer;
  931.   Dest: HDC; X, Y, DX, DY: Integer; Bk, Fg: TColorRef; Style: Cardinal): Bool; stdcall;
  932. {$EXTERNALSYM ImageList_DrawIndirect}
  933. function ImageList_DrawIndirect(pimldp: PImageListDrawParams): Integer; stdcall;
  934. {$EXTERNALSYM ImageList_Remove}
  935. function ImageList_Remove(ImageList: HIMAGELIST; Index: Integer): Bool; stdcall;
  936. {$EXTERNALSYM ImageList_GetIcon}
  937. function ImageList_GetIcon(ImageList: HIMAGELIST; Index: Integer;
  938.   Flags: Cardinal): HIcon; stdcall;
  939. {$EXTERNALSYM ImageList_LoadImageA}
  940. function ImageList_LoadImageA(Instance: THandle; Bmp: PAnsiChar; CX, Grow: Integer;
  941.   Mask: TColorRef; pType, Flags: Cardinal): HIMAGELIST; stdcall;
  942. {$EXTERNALSYM ImageList_LoadImageW}
  943. function ImageList_LoadImageW(Instance: THandle; Bmp: PWideChar; CX, Grow: Integer;
  944.   Mask: TColorRef; pType, Flags: Cardinal): HIMAGELIST; stdcall;
  945. {$EXTERNALSYM ImageList_LoadImage}
  946. function ImageList_LoadImage(Instance: THandle; Bmp: PChar; CX, Grow: Integer;
  947.   Mask: TColorRef; pType, Flags: Cardinal): HIMAGELIST; stdcall;
  948.  
  949. const
  950.   {$EXTERNALSYM ILCF_MOVE}
  951.   ILCF_MOVE   = $00000000;
  952.   {$EXTERNALSYM ILCF_SWAP}
  953.   ILCF_SWAP   = $00000001;
  954.  
  955. {$EXTERNALSYM ImageList_Copy}
  956. function ImageList_Copy(himlDst: HIMAGELIST; iDst: Integer; himlSrc: HIMAGELIST;
  957.   Src: Integer; uFlags: UINT): Integer; stdcall;
  958.  
  959. {$EXTERNALSYM ImageList_BeginDrag}
  960. function ImageList_BeginDrag(ImageList: HIMAGELIST; Track: Integer;
  961.   XHotSpot, YHotSpot: Integer): Bool; stdcall;
  962. {$EXTERNALSYM ImageList_EndDrag}
  963. function ImageList_EndDrag: Bool; stdcall;
  964. {$EXTERNALSYM ImageList_DragEnter}
  965. function ImageList_DragEnter(LockWnd: HWnd; X, Y: Integer): Bool; stdcall;
  966. {$EXTERNALSYM ImageList_DragLeave}
  967. function ImageList_DragLeave(LockWnd: HWnd): Bool; stdcall;
  968. {$EXTERNALSYM ImageList_DragMove}
  969. function ImageList_DragMove(X, Y: Integer): Bool; stdcall;
  970. {$EXTERNALSYM ImageList_SetDragCursorImage}
  971. function ImageList_SetDragCursorImage(ImageList: HIMAGELIST; Drag: Integer;
  972.   XHotSpot, YHotSpot: Integer): Bool; stdcall;
  973. {$EXTERNALSYM ImageList_DragShowNolock}
  974. function ImageList_DragShowNolock(Show: Bool): Bool; stdcall;
  975. {$EXTERNALSYM ImageList_GetDragImage}
  976. function ImageList_GetDragImage(Point, HotSpot: PPoint): HIMAGELIST; stdcall;
  977.  
  978. { macros }
  979. {$EXTERNALSYM ImageList_RemoveAll}
  980. procedure ImageList_RemoveAll(ImageList: HIMAGELIST);
  981. {$EXTERNALSYM ImageList_ExtractIcon}
  982. function ImageList_ExtractIcon(Instance: THandle; ImageList: HIMAGELIST;
  983.   Image: Integer): HIcon;
  984. {$EXTERNALSYM ImageList_LoadBitmap}
  985. function ImageList_LoadBitmap(Instance: THandle; Bmp: PChar;
  986.   CX, Grow: Integer; MasK: TColorRef): HIMAGELIST;
  987.  
  988. {$EXTERNALSYM ImageList_Read}
  989. function ImageList_Read(Stream: IStream): HIMAGELIST; stdcall;
  990. {$EXTERNALSYM ImageList_Write}
  991. function ImageList_Write(ImageList: HIMAGELIST; Stream: IStream): BOOL; stdcall;
  992.  
  993. type
  994.   PImageInfo = ^TImageInfo;
  995.   {$EXTERNALSYM _IMAGEINFO}
  996.   _IMAGEINFO = packed record
  997.     hbmImage: HBitmap;
  998.     hbmMask: HBitmap;
  999.     Unused1: Integer;
  1000.     Unused2: Integer;
  1001.     rcImage: TRect;
  1002.   end;
  1003.   TImageInfo = _IMAGEINFO;
  1004.   {$EXTERNALSYM IMAGEINFO}
  1005.   IMAGEINFO = _IMAGEINFO;
  1006.  
  1007. {$EXTERNALSYM ImageList_GetIconSize}
  1008. function ImageList_GetIconSize(ImageList: HIMAGELIST; var CX, CY: Integer): Bool; stdcall;
  1009. {$EXTERNALSYM ImageList_SetIconSize}
  1010. function ImageList_SetIconSize(ImageList: HIMAGELIST; CX, CY: Integer): Bool; stdcall;
  1011. {$EXTERNALSYM ImageList_GetImageInfo}
  1012. function ImageList_GetImageInfo(ImageList: HIMAGELIST; Index: Integer;
  1013.   var ImageInfo: TImageInfo): Bool; stdcall;
  1014. {$EXTERNALSYM ImageList_Merge}
  1015. function ImageList_Merge(ImageList1: HIMAGELIST; Index1: Integer;
  1016.   ImageList2: HIMAGELIST; Index2: Integer; DX, DY: Integer): Bool; stdcall;
  1017. {$EXTERNALSYM ImageList_Duplicate}
  1018. function ImageList_Duplicate(himl: HIMAGELIST): HIMAGELIST; stdcall;
  1019.  
  1020. { ====== HEADER CONTROL ========================== }
  1021.  
  1022. const
  1023.   {$EXTERNALSYM WC_HEADER}
  1024.   WC_HEADER = 'SysHeader32';
  1025.  
  1026.   {$EXTERNALSYM HDS_HORZ}
  1027.   HDS_HORZ                = $00000000;
  1028.   {$EXTERNALSYM HDS_BUTTONS}
  1029.   HDS_BUTTONS             = $00000002;
  1030.   {$EXTERNALSYM HDS_HOTTRACK}
  1031.   HDS_HOTTRACK            = $00000004;
  1032.   {$EXTERNALSYM HDS_HIDDEN}
  1033.   HDS_HIDDEN              = $00000008;
  1034.   {$EXTERNALSYM HDS_DRAGDROP}
  1035.   HDS_DRAGDROP            = $00000040;
  1036.   {$EXTERNALSYM HDS_FULLDRAG}
  1037.   HDS_FULLDRAG            = $00000080;
  1038.  
  1039. type
  1040.   PHDItemA = ^THDItemA;
  1041.   PHDItemW = ^THDItemW;
  1042.   PHDItem = PHDItemA;
  1043.   {$EXTERNALSYM _HD_ITEMA}
  1044.   _HD_ITEMA = packed record
  1045.     Mask: Cardinal;
  1046.     cxy: Integer;
  1047.     pszText: PAnsiChar;
  1048.     hbm: HBITMAP;
  1049.     cchTextMax: Integer;
  1050.     fmt: Integer;
  1051.     lParam: LPARAM;
  1052.     iImage: Integer;        // index of bitmap in ImageList
  1053.     iOrder: Integer;        // where to draw this item
  1054.   end;
  1055.   {$EXTERNALSYM _HD_ITEMW}
  1056.   _HD_ITEMW = packed record
  1057.     Mask: Cardinal;
  1058.     cxy: Integer;
  1059.     pszText: PWideChar;
  1060.     hbm: HBITMAP;
  1061.     cchTextMax: Integer;
  1062.     fmt: Integer;
  1063.     lParam: LPARAM;
  1064.     iImage: Integer;        // index of bitmap in ImageList
  1065.     iOrder: Integer;        // where to draw this item
  1066.   end;
  1067.   {$EXTERNALSYM _HD_ITEM}
  1068.   _HD_ITEM = _HD_ITEMA;
  1069.   THDItemA = _HD_ITEMA;
  1070.   THDItemW = _HD_ITEMW;
  1071.   THDItem = THDItemA;
  1072.   {$EXTERNALSYM HD_ITEMA}
  1073.   HD_ITEMA = _HD_ITEMA;
  1074.   {$EXTERNALSYM HD_ITEMW}
  1075.   HD_ITEMW = _HD_ITEMW;
  1076.   {$EXTERNALSYM HD_ITEM}
  1077.   HD_ITEM = HD_ITEMA;
  1078.  
  1079. const
  1080.   {$EXTERNALSYM HDI_WIDTH}
  1081.   HDI_WIDTH               = $0001;
  1082.   {$EXTERNALSYM HDI_HEIGHT}
  1083.   HDI_HEIGHT              = HDI_WIDTH;
  1084.   {$EXTERNALSYM HDI_TEXT}
  1085.   HDI_TEXT                = $0002;
  1086.   {$EXTERNALSYM HDI_FORMAT}
  1087.   HDI_FORMAT              = $0004;
  1088.   {$EXTERNALSYM HDI_LPARAM}
  1089.   HDI_LPARAM              = $0008;
  1090.   {$EXTERNALSYM HDI_BITMAP}
  1091.   HDI_BITMAP              = $0010;
  1092.   {$EXTERNALSYM HDI_IMAGE}
  1093.   HDI_IMAGE               = $0020;
  1094.   {$EXTERNALSYM HDI_DI_SETITEM}
  1095.   HDI_DI_SETITEM          = $0040;
  1096.   {$EXTERNALSYM HDI_ORDER}
  1097.   HDI_ORDER               = $0080;
  1098.  
  1099.   {$EXTERNALSYM HDF_LEFT}
  1100.   HDF_LEFT                = 0;
  1101.   {$EXTERNALSYM HDF_RIGHT}
  1102.   HDF_RIGHT               = 1;
  1103.   {$EXTERNALSYM HDF_CENTER}
  1104.   HDF_CENTER              = 2;
  1105.   {$EXTERNALSYM HDF_JUSTIFYMASK}
  1106.   HDF_JUSTIFYMASK         = $0003;
  1107.   {$EXTERNALSYM HDF_RTLREADING}
  1108.   HDF_RTLREADING          = 4; 
  1109.  
  1110.   {$EXTERNALSYM HDF_OWNERDRAW}
  1111.   HDF_OWNERDRAW           = $8000;
  1112.   {$EXTERNALSYM HDF_STRING}
  1113.   HDF_STRING              = $4000;
  1114.   {$EXTERNALSYM HDF_BITMAP}
  1115.   HDF_BITMAP              = $2000;
  1116.   {$EXTERNALSYM HDF_BITMAP_ON_RIGHT}
  1117.   HDF_BITMAP_ON_RIGHT     = $1000;
  1118.   {$EXTERNALSYM HDF_IMAGE}
  1119.   HDF_IMAGE               = $0800;
  1120.  
  1121.   {$EXTERNALSYM HDM_GETITEMCOUNT}
  1122.   HDM_GETITEMCOUNT        = HDM_FIRST + 0;
  1123.  
  1124. {$EXTERNALSYM Header_GetItemCount}
  1125. function Header_GetItemCount(Header: HWnd): Integer;
  1126.  
  1127. const
  1128.   {$EXTERNALSYM HDM_INSERTITEMW}
  1129.   HDM_INSERTITEMW          = HDM_FIRST + 10;
  1130.   {$EXTERNALSYM HDM_INSERTITEMA}
  1131.   HDM_INSERTITEMA          = HDM_FIRST + 1;
  1132. {$IFDEF UNICODE}
  1133.   {$EXTERNALSYM HDM_INSERTITEM}
  1134.   HDM_INSERTITEM           = HDM_INSERTITEMW;
  1135. {$ELSE}
  1136.   {$EXTERNALSYM HDM_INSERTITEM}
  1137.   HDM_INSERTITEM           = HDM_INSERTITEMA;
  1138. {$ENDIF}
  1139.  
  1140. {$EXTERNALSYM Header_InsertItem}
  1141. function Header_InsertItem(Header: HWnd; Index: Integer;
  1142.   const Item: THDItem): Integer;
  1143.  
  1144. const
  1145.   {$EXTERNALSYM HDM_DELETEITEM}
  1146.   HDM_DELETEITEM          = HDM_FIRST + 2;
  1147.  
  1148. {$EXTERNALSYM Header_DeleteItem}
  1149. function Header_DeleteItem(Header: HWnd; Index: Integer): Bool;
  1150.  
  1151. const
  1152.   {$EXTERNALSYM HDM_GETITEMW}
  1153.   HDM_GETITEMW             = HDM_FIRST + 11;
  1154.   {$EXTERNALSYM HDM_GETITEMA}
  1155.   HDM_GETITEMA             = HDM_FIRST + 3;
  1156. {$IFDEF UNICODE}
  1157.   {$EXTERNALSYM HDM_GETITEM}
  1158.   HDM_GETITEM              = HDM_GETITEMW;
  1159. {$ELSE}
  1160.   {$EXTERNALSYM HDM_GETITEM}
  1161.   HDM_GETITEM              = HDM_GETITEMA;
  1162. {$ENDIF}
  1163.  
  1164. {$EXTERNALSYM Header_GetItem}
  1165. function Header_GetItem(Header: HWnd; Index: Integer;
  1166.   var Item: THDItem): Bool;
  1167.  
  1168. const
  1169.   {$EXTERNALSYM HDM_SETITEMA}
  1170.   HDM_SETITEMA            = HDM_FIRST + 4;
  1171.   {$EXTERNALSYM HDM_SETITEMW}
  1172.   HDM_SETITEMW            = HDM_FIRST + 12;
  1173. {$IFDEF UNICODE}
  1174.   {$EXTERNALSYM HDM_SETITEM}
  1175.   HDM_SETITEM             = HDM_SETITEMW;
  1176. {$ELSE}
  1177.   {$EXTERNALSYM HDM_SETITEM}
  1178.   HDM_SETITEM             = HDM_SETITEMA;
  1179. {$ENDIF}
  1180.  
  1181. {$EXTERNALSYM Header_SetItem}
  1182. function Header_SetItem(Header: HWnd; Index: Integer; const Item: THDItem): Bool;
  1183.  
  1184. type
  1185.   PHDLayout = ^THDLayout;
  1186.   {$EXTERNALSYM _HD_LAYOUT}
  1187.   _HD_LAYOUT = packed record
  1188.     Rect: ^TRect;
  1189.     WindowPos: PWindowPos;
  1190.   end;
  1191.   THDLayout = _HD_LAYOUT;
  1192.   {$EXTERNALSYM HD_LAYOUT}
  1193.   HD_LAYOUT = _HD_LAYOUT;
  1194.  
  1195. const
  1196.   {$EXTERNALSYM HDM_LAYOUT}
  1197.   HDM_LAYOUT              = HDM_FIRST + 5;
  1198.  
  1199. {$EXTERNALSYM Header_Layout}
  1200. function Header_Layout(Header: HWnd; Layout: PHDLayout): Bool;
  1201.  
  1202. const
  1203.   {$EXTERNALSYM HHT_NOWHERE}
  1204.   HHT_NOWHERE             = $0001;
  1205.   {$EXTERNALSYM HHT_ONHEADER}
  1206.   HHT_ONHEADER            = $0002;
  1207.   {$EXTERNALSYM HHT_ONDIVIDER}
  1208.   HHT_ONDIVIDER           = $0004;
  1209.   {$EXTERNALSYM HHT_ONDIVOPEN}
  1210.   HHT_ONDIVOPEN           = $0008;
  1211.   {$EXTERNALSYM HHT_ABOVE}
  1212.   HHT_ABOVE               = $0100;
  1213.   {$EXTERNALSYM HHT_BELOW}
  1214.   HHT_BELOW               = $0200;
  1215.   {$EXTERNALSYM HHT_TORIGHT}
  1216.   HHT_TORIGHT             = $0400;
  1217.   {$EXTERNALSYM HHT_TOLEFT}
  1218.   HHT_TOLEFT              = $0800;
  1219.  
  1220. type
  1221.   PHDHitTestInfo = ^THDHitTestInfo;
  1222.   {$EXTERNALSYM _HD_HITTESTINFO}
  1223.   _HD_HITTESTINFO = packed record
  1224.     Point: TPoint;
  1225.     Flags: Cardinal;
  1226.     Item: Integer;
  1227.   end;
  1228.   THDHitTestInfo = _HD_HITTESTINFO;
  1229.   {$EXTERNALSYM HD_HITTESTINFO}
  1230.   HD_HITTESTINFO = _HD_HITTESTINFO;
  1231.  
  1232. const
  1233.   {$EXTERNALSYM HDM_HITTEST}
  1234.   HDM_HITTEST             = HDM_FIRST + 6;
  1235.   {$EXTERNALSYM HDM_GETITEMRECT}
  1236.   HDM_GETITEMRECT         = HDM_FIRST + 7;
  1237.   {$EXTERNALSYM HDM_SETIMAGELIST}
  1238.   HDM_SETIMAGELIST        = HDM_FIRST + 8;
  1239.   {$EXTERNALSYM HDM_GETIMAGELIST}
  1240.   HDM_GETIMAGELIST        = HDM_FIRST + 9;
  1241.   {$EXTERNALSYM HDM_ORDERTOINDEX}
  1242.   HDM_ORDERTOINDEX        = HDM_FIRST + 15;
  1243.   {$EXTERNALSYM HDM_CREATEDRAGIMAGE}
  1244.   HDM_CREATEDRAGIMAGE     = HDM_FIRST + 16;  // wparam = which item = by index;
  1245.   {$EXTERNALSYM HDM_GETORDERARRAY}
  1246.   HDM_GETORDERARRAY       = HDM_FIRST + 17;
  1247.   {$EXTERNALSYM HDM_SETORDERARRAY}
  1248.   HDM_SETORDERARRAY       = HDM_FIRST + 18;
  1249.   {$EXTERNALSYM HDM_SETHOTDIVIDER}
  1250.   HDM_SETHOTDIVIDER       = HDM_FIRST + 19;
  1251.   {$EXTERNALSYM HDM_SETUNICODEFORMAT}
  1252.   HDM_SETUNICODEFORMAT    = CCM_SETUNICODEFORMAT;
  1253.   {$EXTERNALSYM HDM_GETUNICODEFORMAT}
  1254.   HDM_GETUNICODEFORMAT    = CCM_GETUNICODEFORMAT;
  1255.  
  1256. {$EXTERNALSYM Header_GetItemRect}
  1257. function Header_GetItemRect(hwnd: HWND; iItem: Integer; lprc: PRect): Integer;
  1258. {$EXTERNALSYM Header_SetImageList}
  1259. function Header_SetImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST;
  1260. {$EXTERNALSYM Header_GetImageList}
  1261. function Header_GetImageList(hwnd: HWND): HIMAGELIST;
  1262. {$EXTERNALSYM Header_OrderToIndex}
  1263. function Header_OrderToIndex(hwnd: HWND; i: Integer): Integer;
  1264. {$EXTERNALSYM Header_CreateDragImage}
  1265. function Header_CreateDragImage(hwnd: HWND; i: Integer): HIMAGELIST;
  1266. {$EXTERNALSYM Header_GetOrderArray}
  1267. function Header_GetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  1268. {$EXTERNALSYM Header_SetOrderArray}
  1269. function Header_SetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  1270.  
  1271. // lparam = int array of size HDM_GETITEMCOUNT
  1272. // the array specifies the order that all items should be displayed.
  1273. // e.g.  { 2, 0, 1}
  1274. // says the index 2 item should be shown in the 0ths position
  1275. //      index 0 should be shown in the 1st position
  1276. //      index 1 should be shown in the 2nd position
  1277.  
  1278. {$EXTERNALSYM Header_SetHotDivider}
  1279. function Header_SetHotDivider(hwnd: HWND; fPos: BOOL; dw: DWORD): Integer;
  1280.  
  1281. // convenience message for external dragdrop
  1282. // wParam = BOOL  specifying whether the lParam is a dwPos of the cursor
  1283. //              position or the index of which divider to hotlight
  1284. // lParam = depends on wParam  (-1 and wParm = FALSE turns off hotlight)
  1285.  
  1286. {$EXTERNALSYM Header_SetUnicodeFormat}
  1287. function Header_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  1288. {$EXTERNALSYM Header_GetUnicodeFormat}
  1289. function Header_GetUnicodeFormat(hwnd: HWND): Integer;
  1290.  
  1291. const
  1292.   {$EXTERNALSYM HDN_ITEMCHANGINGA}
  1293.   HDN_ITEMCHANGINGA        = HDN_FIRST-0;
  1294.   {$EXTERNALSYM HDN_ITEMCHANGEDA}
  1295.   HDN_ITEMCHANGEDA         = HDN_FIRST-1;
  1296.   {$EXTERNALSYM HDN_ITEMCLICKA}
  1297.   HDN_ITEMCLICKA           = HDN_FIRST-2;
  1298.   {$EXTERNALSYM HDN_ITEMDBLCLICKA}
  1299.   HDN_ITEMDBLCLICKA        = HDN_FIRST-3;
  1300.   {$EXTERNALSYM HDN_DIVIDERDBLCLICKA}
  1301.   HDN_DIVIDERDBLCLICKA     = HDN_FIRST-5;
  1302.   {$EXTERNALSYM HDN_BEGINTRACKA}
  1303.   HDN_BEGINTRACKA          = HDN_FIRST-6;
  1304.   {$EXTERNALSYM HDN_ENDTRACKA}
  1305.   HDN_ENDTRACKA            = HDN_FIRST-7;
  1306.   {$EXTERNALSYM HDN_TRACKA}
  1307.   HDN_TRACKA               = HDN_FIRST-8;
  1308.   {$EXTERNALSYM HDN_GETDISPINFOA}
  1309.   HDN_GETDISPINFOA         = HDN_FIRST-9;
  1310.   {$EXTERNALSYM HDN_BEGINDRAG}
  1311.   HDN_BEGINDRAG            = HDN_FIRST-10;
  1312.   {$EXTERNALSYM HDN_ENDDRAG}
  1313.   HDN_ENDDRAG              = HDN_FIRST-11;
  1314.  
  1315.   {$EXTERNALSYM HDN_ITEMCHANGINGW}
  1316.   HDN_ITEMCHANGINGW        = HDN_FIRST-20;
  1317.   {$EXTERNALSYM HDN_ITEMCHANGEDW}
  1318.   HDN_ITEMCHANGEDW         = HDN_FIRST-21;
  1319.   {$EXTERNALSYM HDN_ITEMCLICKW}
  1320.   HDN_ITEMCLICKW           = HDN_FIRST-22;
  1321.   {$EXTERNALSYM HDN_ITEMDBLCLICKW}
  1322.   HDN_ITEMDBLCLICKW        = HDN_FIRST-23;
  1323.   {$EXTERNALSYM HDN_DIVIDERDBLCLICKW}
  1324.   HDN_DIVIDERDBLCLICKW     = HDN_FIRST-25;
  1325.   {$EXTERNALSYM HDN_BEGINTRACKW}
  1326.   HDN_BEGINTRACKW          = HDN_FIRST-26;
  1327.   {$EXTERNALSYM HDN_ENDTRACKW}
  1328.   HDN_ENDTRACKW            = HDN_FIRST-27;
  1329.   {$EXTERNALSYM HDN_TRACKW}
  1330.   HDN_TRACKW               = HDN_FIRST-28;
  1331.   {$EXTERNALSYM HDN_GETDISPINFOW}
  1332.   HDN_GETDISPINFOW         = HDN_FIRST-29;
  1333.  
  1334. {$IFDEF UNICODE}
  1335.   {$EXTERNALSYM HDN_ITEMCHANGING}
  1336.   HDN_ITEMCHANGING        = HDN_ITEMCHANGINGW;
  1337.   {$EXTERNALSYM HDN_ITEMCHANGED}
  1338.   HDN_ITEMCHANGED         = HDN_ITEMCHANGEDW;
  1339.   {$EXTERNALSYM HDN_ITEMCLICK}
  1340.   HDN_ITEMCLICK           = HDN_ITEMCLICKW;
  1341.   {$EXTERNALSYM HDN_ITEMDBLCLICK}
  1342.   HDN_ITEMDBLCLICK        = HDN_ITEMDBLCLICKW;
  1343.   {$EXTERNALSYM HDN_DIVIDERDBLCLICK}
  1344.   HDN_DIVIDERDBLCLICK     = HDN_DIVIDERDBLCLICKW;
  1345.   {$EXTERNALSYM HDN_BEGINTRACK}
  1346.   HDN_BEGINTRACK          = HDN_BEGINTRACKW;
  1347.   {$EXTERNALSYM HDN_ENDTRACK}
  1348.   HDN_ENDTRACK            = HDN_ENDTRACKW;
  1349.   {$EXTERNALSYM HDN_TRACK}
  1350.   HDN_TRACK               = HDN_TRACKW;
  1351.   {$EXTERNALSYM HDN_GETDISPINFO}
  1352.   HDN_GETDISPINFO         = HDN_GETDISPINFOW;
  1353. {$ELSE}
  1354.   {$EXTERNALSYM HDN_ITEMCHANGING}
  1355.   HDN_ITEMCHANGING        = HDN_ITEMCHANGINGA;
  1356.   {$EXTERNALSYM HDN_ITEMCHANGED}
  1357.   HDN_ITEMCHANGED         = HDN_ITEMCHANGEDA;
  1358.   {$EXTERNALSYM HDN_ITEMCLICK}
  1359.   HDN_ITEMCLICK           = HDN_ITEMCLICKA;
  1360.   {$EXTERNALSYM HDN_ITEMDBLCLICK}
  1361.   HDN_ITEMDBLCLICK        = HDN_ITEMDBLCLICKA;
  1362.   {$EXTERNALSYM HDN_DIVIDERDBLCLICK}
  1363.   HDN_DIVIDERDBLCLICK     = HDN_DIVIDERDBLCLICKA;
  1364.   {$EXTERNALSYM HDN_BEGINTRACK}
  1365.   HDN_BEGINTRACK          = HDN_BEGINTRACKA;
  1366.   {$EXTERNALSYM HDN_ENDTRACK}
  1367.   HDN_ENDTRACK            = HDN_ENDTRACKA;
  1368.   {$EXTERNALSYM HDN_TRACK}
  1369.   HDN_TRACK               = HDN_TRACKA;
  1370.   {$EXTERNALSYM HDN_GETDISPINFO}
  1371.   HDN_GETDISPINFO         = HDN_GETDISPINFOA;
  1372. {$ENDIF}
  1373.  
  1374. type
  1375.   {$EXTERNALSYM tagNMHEADERA}
  1376.   tagNMHEADERA = packed record
  1377.     Hdr: TNMHdr;
  1378.     Item: Integer;
  1379.     Button: Integer;
  1380.     PItem: PHDItemA;
  1381.   end;
  1382.   {$EXTERNALSYM tagNMHEADERW}
  1383.   tagNMHEADERW = packed record
  1384.     Hdr: TNMHdr;
  1385.     Item: Integer;
  1386.     Button: Integer;
  1387.     PItem: PHDItemW;
  1388.   end;
  1389.   {$EXTERNALSYM tagNMHEADER}
  1390.   tagNMHEADER = tagNMHEADERA;
  1391.   {$EXTERNALSYM HD_NOTIFYA}
  1392.   HD_NOTIFYA = tagNMHEADERA;
  1393.   {$EXTERNALSYM HD_NOTIFYW}
  1394.   HD_NOTIFYW = tagNMHEADERW;
  1395.   {$EXTERNALSYM HD_NOTIFY}
  1396.   HD_NOTIFY = HD_NOTIFYA;
  1397.   PHDNotifyA = ^THDNotifyA;
  1398.   PHDNotifyW = ^THDNotifyW;
  1399.   PHDNotify = PHDNotifyA;
  1400.   THDNotifyA = tagNMHEADERA;
  1401.   THDNotifyW = tagNMHEADERW;
  1402.   THDNotify = THDNotifyA;
  1403.  
  1404.   {$EXTERNALSYM tagNMHDDISPINFOA}
  1405.   tagNMHDDISPINFOA = packed record
  1406.     hdr: TNMHdr;
  1407.     iItem: Integer;
  1408.     mask: UINT;
  1409.     pszText: PAnsiChar;
  1410.     cchTextMax: Integer;
  1411.     iImage: Integer;
  1412.     lParam: LPARAM;
  1413.   end;
  1414.   {$EXTERNALSYM tagNMHDDISPINFOW}
  1415.   tagNMHDDISPINFOW = packed record
  1416.     hdr: TNMHdr;
  1417.     iItem: Integer;
  1418.     mask: UINT;
  1419.     pszText: PWideChar;
  1420.     cchTextMax: Integer;
  1421.     iImage: Integer;
  1422.     lParam: LPARAM;
  1423.   end;
  1424.   {$EXTERNALSYM tagNMHDDISPINFO}
  1425.   tagNMHDDISPINFO = tagNMHDDISPINFOA;
  1426.   PNMHDispInfoA = ^TNMHDispInfoA;
  1427.   PNMHDispInfoW = ^TNMHDispInfoW;
  1428.   PNMHDispInfo = PNMHDispInfoA;
  1429.   TNMHDispInfoA = tagNMHDDISPINFOA;
  1430.   TNMHDispInfoW = tagNMHDDISPINFOW;
  1431.   TNMHDispInfo = TNMHDispInfoA;
  1432.  
  1433.  
  1434. { ====== TOOLBAR CONTROL =================== }
  1435.  
  1436. const
  1437.   {$EXTERNALSYM TOOLBARCLASSNAME}
  1438.   TOOLBARCLASSNAME = 'ToolbarWindow32';
  1439.  
  1440. type
  1441.   PTBButton = ^TTBButton;
  1442.   {$EXTERNALSYM _TBBUTTON}
  1443.   _TBBUTTON = packed record
  1444.     iBitmap: Integer;
  1445.     idCommand: Integer;
  1446.     fsState: Byte;
  1447.     fsStyle: Byte;
  1448.     bReserved: array[1..2] of Byte;
  1449.     dwData: Longint;
  1450.     iString: Integer;
  1451.   end;
  1452.   TTBButton = _TBBUTTON;
  1453.  
  1454.   PColorMap = ^TColorMap;
  1455.   {$EXTERNALSYM _COLORMAP}
  1456.   _COLORMAP = packed record
  1457.     cFrom: TColorRef;
  1458.     cTo: TColorRef;
  1459.   end;
  1460.   TColorMap = _COLORMAP;
  1461.   {$EXTERNALSYM COLORMAP}
  1462.   COLORMAP = _COLORMAP;
  1463.  
  1464. {$EXTERNALSYM CreateToolBarEx}
  1465. function CreateToolBarEx(Wnd: HWnd; ws: Longint; ID: UINT;
  1466.   Bitmaps: Integer; BMInst: THandle; BMID: Cardinal; Buttons: PTBButton;
  1467.   NumButtons: Integer; dxButton, dyButton: Integer;
  1468.   dxBitmap, dyBitmap: Integer; StructSize: UINT): HWnd; stdcall;
  1469.  
  1470. {$EXTERNALSYM CreateMappedBitmap}
  1471. function CreateMappedBitmap(Instance: THandle; Bitmap: Integer;
  1472.   Flags: UINT; ColorMap: PColorMap; NumMaps: Integer): HBitmap; stdcall;
  1473.  
  1474. const
  1475.  
  1476.   {$EXTERNALSYM CMB_MASKED}
  1477.   CMB_MASKED              = $02;
  1478.  
  1479.   {$EXTERNALSYM TBSTATE_CHECKED}
  1480.   TBSTATE_CHECKED         = $01;
  1481.   {$EXTERNALSYM TBSTATE_PRESSED}
  1482.   TBSTATE_PRESSED         = $02;
  1483.   {$EXTERNALSYM TBSTATE_ENABLED}
  1484.   TBSTATE_ENABLED         = $04;
  1485.   {$EXTERNALSYM TBSTATE_HIDDEN}
  1486.   TBSTATE_HIDDEN          = $08;
  1487.   {$EXTERNALSYM TBSTATE_INDETERMINATE}
  1488.   TBSTATE_INDETERMINATE   = $10;
  1489.   {$EXTERNALSYM TBSTATE_WRAP}
  1490.   TBSTATE_WRAP            = $20;
  1491.   {$EXTERNALSYM TBSTATE_ELLIPSES}
  1492.   TBSTATE_ELLIPSES        = $40;
  1493.   {$EXTERNALSYM TBSTATE_MARKED}
  1494.   TBSTATE_MARKED          = $80;
  1495.  
  1496.   {$EXTERNALSYM TBSTYLE_BUTTON}
  1497.   TBSTYLE_BUTTON          = $00;
  1498.   {$EXTERNALSYM TBSTYLE_SEP}
  1499.   TBSTYLE_SEP             = $01;
  1500.   {$EXTERNALSYM TBSTYLE_CHECK}
  1501.   TBSTYLE_CHECK           = $02;
  1502.   {$EXTERNALSYM TBSTYLE_GROUP}
  1503.   TBSTYLE_GROUP           = $04;
  1504.   {$EXTERNALSYM TBSTYLE_CHECKGROUP}
  1505.   TBSTYLE_CHECKGROUP      = TBSTYLE_GROUP or TBSTYLE_CHECK;
  1506.   {$EXTERNALSYM TBSTYLE_DROPDOWN}
  1507.   TBSTYLE_DROPDOWN        = $08;
  1508.   {$EXTERNALSYM TBSTYLE_AUTOSIZE}
  1509.   TBSTYLE_AUTOSIZE        = $0010; // automatically calculate the cx of the button
  1510.   {$EXTERNALSYM TBSTYLE_NOPREFIX}
  1511.   TBSTYLE_NOPREFIX        = $0020; // if this button should not have accel prefix
  1512.  
  1513.   {$EXTERNALSYM TBSTYLE_TOOLTIPS}
  1514.   TBSTYLE_TOOLTIPS        = $0100;
  1515.   {$EXTERNALSYM TBSTYLE_WRAPABLE}
  1516.   TBSTYLE_WRAPABLE        = $0200;
  1517.   {$EXTERNALSYM TBSTYLE_ALTDRAG}
  1518.   TBSTYLE_ALTDRAG         = $0400;
  1519.   {$EXTERNALSYM TBSTYLE_FLAT}
  1520.   TBSTYLE_FLAT            = $0800;
  1521.   {$EXTERNALSYM TBSTYLE_LIST}
  1522.   TBSTYLE_LIST            = $1000;
  1523.   {$EXTERNALSYM TBSTYLE_CUSTOMERASE}
  1524.   TBSTYLE_CUSTOMERASE     = $2000;
  1525.   {$EXTERNALSYM TBSTYLE_REGISTERDROP}
  1526.   TBSTYLE_REGISTERDROP    = $4000;
  1527.   {$EXTERNALSYM TBSTYLE_TRANSPARENT}
  1528.   TBSTYLE_TRANSPARENT     = $8000;
  1529.   {$EXTERNALSYM TBSTYLE_EX_DRAWDDARROWS}
  1530.   TBSTYLE_EX_DRAWDDARROWS = $00000001;
  1531.  
  1532. type
  1533.   // Custom Draw Structure
  1534.   {$EXTERNALSYM _NMTBCUSTOMDRAW}
  1535.   _NMTBCUSTOMDRAW = packed record
  1536.     nmcd: TNMCustomDraw;
  1537.     hbrMonoDither: HBRUSH;
  1538.     hbrLines: HBRUSH;                // For drawing lines on buttons
  1539.     hpenLines: HPEN;                 // For drawing lines on buttons
  1540.     clrText: COLORREF;               // Color of text
  1541.     clrMark: COLORREF;               // Color of text bk when marked. (only if TBSTATE_MARKED)
  1542.     clrTextHighlight: COLORREF;      // Color of text when highlighted
  1543.     clrBtnFace: COLORREF;            // Background of the button
  1544.     clrBtnHighlight: COLORREF;       // 3D highlight
  1545.     clrHighlightHotTrack: COLORREF;  // In conjunction with fHighlightHotTrack
  1546.                                      // will cause button to highlight like a menu
  1547.     rcText: TRect;                   // Rect for text
  1548.     nStringBkMode: Integer;
  1549.     nHLStringBkMode: Integer;
  1550.   end;
  1551.   PNMTBCustomDraw = ^TNMTBCustomDraw;
  1552.   TNMTBCustomDraw = _NMTBCUSTOMDRAW;
  1553.  
  1554. const
  1555.   // Toolbar custom draw return flags
  1556.   {$EXTERNALSYM TBCDRF_NOEDGES}
  1557.   TBCDRF_NOEDGES              = $00010000;  // Don't draw button edges
  1558.   {$EXTERNALSYM TBCDRF_HILITEHOTTRACK}
  1559.   TBCDRF_HILITEHOTTRACK       = $00020000;  // Use color of the button bk when hottracked
  1560.   {$EXTERNALSYM TBCDRF_NOOFFSET}
  1561.   TBCDRF_NOOFFSET             = $00040000;  // Don't offset button if pressed
  1562.   {$EXTERNALSYM TBCDRF_NOMARK}
  1563.   TBCDRF_NOMARK               = $00080000;  // Don't draw default highlight of image/text for TBSTATE_MARKED
  1564.   {$EXTERNALSYM TBCDRF_NOETCHEDEFFECT}
  1565.   TBCDRF_NOETCHEDEFFECT       = $00100000;  // Don't draw etched effect for disabled items
  1566.  
  1567.   {$EXTERNALSYM TB_ENABLEBUTTON}
  1568.   TB_ENABLEBUTTON         = WM_USER + 1;
  1569.   {$EXTERNALSYM TB_CHECKBUTTON}
  1570.   TB_CHECKBUTTON          = WM_USER + 2;
  1571.   {$EXTERNALSYM TB_PRESSBUTTON}
  1572.   TB_PRESSBUTTON          = WM_USER + 3;
  1573.   {$EXTERNALSYM TB_HIDEBUTTON}
  1574.   TB_HIDEBUTTON           = WM_USER + 4;
  1575.   {$EXTERNALSYM TB_INDETERMINATE}
  1576.   TB_INDETERMINATE        = WM_USER + 5;
  1577.   {$EXTERNALSYM TB_MARKBUTTON}
  1578.   TB_MARKBUTTON           = WM_USER + 6;
  1579.   {$EXTERNALSYM TB_ISBUTTONENABLED}
  1580.   TB_ISBUTTONENABLED      = WM_USER + 9;
  1581.   {$EXTERNALSYM TB_ISBUTTONCHECKED}
  1582.   TB_ISBUTTONCHECKED      = WM_USER + 10;
  1583.   {$EXTERNALSYM TB_ISBUTTONPRESSED}
  1584.   TB_ISBUTTONPRESSED      = WM_USER + 11;
  1585.   {$EXTERNALSYM TB_ISBUTTONHIDDEN}
  1586.   TB_ISBUTTONHIDDEN       = WM_USER + 12;
  1587.   {$EXTERNALSYM TB_ISBUTTONINDETERMINATE}
  1588.   TB_ISBUTTONINDETERMINATE = WM_USER + 13;
  1589.   {$EXTERNALSYM TB_ISBUTTONHIGHLIGHTED}
  1590.   TB_ISBUTTONHIGHLIGHTED   = WM_USER + 14;
  1591.   {$EXTERNALSYM TB_SETSTATE}
  1592.   TB_SETSTATE             = WM_USER + 17;
  1593.   {$EXTERNALSYM TB_GETSTATE}
  1594.   TB_GETSTATE             = WM_USER + 18;
  1595.   {$EXTERNALSYM TB_ADDBITMAP}
  1596.   TB_ADDBITMAP            = WM_USER + 19;
  1597.  
  1598. type
  1599.   PTBAddBitmap = ^TTBAddBitmap;
  1600.   {$EXTERNALSYM tagTBADDBITMAP}
  1601.   tagTBADDBITMAP = packed record
  1602.     hInst: THandle;
  1603.     nID: UINT;
  1604.   end;
  1605.   TTBAddBitmap = tagTBADDBITMAP;
  1606.   {$EXTERNALSYM TBADDBITMAP}
  1607.   TBADDBITMAP = tagTBADDBITMAP;
  1608.  
  1609. const
  1610.   {$EXTERNALSYM HINST_COMMCTRL}
  1611.   HINST_COMMCTRL = THandle(-1);
  1612.  
  1613.   {$EXTERNALSYM IDB_STD_SMALL_COLOR}
  1614.   IDB_STD_SMALL_COLOR     = 0;
  1615.   {$EXTERNALSYM IDB_STD_LARGE_COLOR}
  1616.   IDB_STD_LARGE_COLOR     = 1;
  1617.   {$EXTERNALSYM IDB_VIEW_SMALL_COLOR}
  1618.   IDB_VIEW_SMALL_COLOR    = 4;
  1619.   {$EXTERNALSYM IDB_VIEW_LARGE_COLOR}
  1620.   IDB_VIEW_LARGE_COLOR    = 5;
  1621.   {$EXTERNALSYM IDB_HIST_SMALL_COLOR}
  1622.   IDB_HIST_SMALL_COLOR    = 8;
  1623.   {$EXTERNALSYM IDB_HIST_LARGE_COLOR}
  1624.   IDB_HIST_LARGE_COLOR    = 9;
  1625.  
  1626. { icon indexes for standard bitmap }
  1627.   {$EXTERNALSYM STD_CUT}
  1628.   STD_CUT                 = 0;
  1629.   {$EXTERNALSYM STD_COPY}
  1630.   STD_COPY                = 1;
  1631.   {$EXTERNALSYM STD_PASTE}
  1632.   STD_PASTE               = 2;
  1633.   {$EXTERNALSYM STD_UNDO}
  1634.   STD_UNDO                = 3;
  1635.   {$EXTERNALSYM STD_REDOW}
  1636.   STD_REDOW               = 4;
  1637.   {$EXTERNALSYM STD_DELETE}
  1638.   STD_DELETE              = 5;
  1639.   {$EXTERNALSYM STD_FILENEW}
  1640.   STD_FILENEW             = 6;
  1641.   {$EXTERNALSYM STD_FILEOPEN}
  1642.   STD_FILEOPEN            = 7;
  1643.   {$EXTERNALSYM STD_FILESAVE}
  1644.   STD_FILESAVE            = 8;
  1645.   {$EXTERNALSYM STD_PRINTPRE}
  1646.   STD_PRINTPRE            = 9;
  1647.   {$EXTERNALSYM STD_PROPERTIES}
  1648.   STD_PROPERTIES          = 10;
  1649.   {$EXTERNALSYM STD_HELP}
  1650.   STD_HELP                = 11;
  1651.   {$EXTERNALSYM STD_FIND}
  1652.   STD_FIND                = 12;
  1653.   {$EXTERNALSYM STD_REPLACE}
  1654.   STD_REPLACE             = 13;
  1655.   {$EXTERNALSYM STD_PRINT}
  1656.   STD_PRINT               = 14;
  1657.  
  1658. { icon indexes for standard view bitmap }
  1659.  
  1660.   {$EXTERNALSYM VIEW_LARGEICONS}
  1661.   VIEW_LARGEICONS         = 0;
  1662.   {$EXTERNALSYM VIEW_SMALLICONS}
  1663.   VIEW_SMALLICONS         = 1;
  1664.   {$EXTERNALSYM VIEW_LIST}
  1665.   VIEW_LIST               = 2;
  1666.   {$EXTERNALSYM VIEW_DETAILS}
  1667.   VIEW_DETAILS            = 3;
  1668.   {$EXTERNALSYM VIEW_SORTNAME}
  1669.   VIEW_SORTNAME           = 4;
  1670.   {$EXTERNALSYM VIEW_SORTSIZE}
  1671.   VIEW_SORTSIZE           = 5;
  1672.   {$EXTERNALSYM VIEW_SORTDATE}
  1673.   VIEW_SORTDATE           = 6;
  1674.   {$EXTERNALSYM VIEW_SORTTYPE}
  1675.   VIEW_SORTTYPE           = 7;
  1676.   {$EXTERNALSYM VIEW_PARENTFOLDER}
  1677.   VIEW_PARENTFOLDER       = 8;
  1678.   {$EXTERNALSYM VIEW_NETCONNECT}
  1679.   VIEW_NETCONNECT         = 9;
  1680.   {$EXTERNALSYM VIEW_NETDISCONNECT}
  1681.   VIEW_NETDISCONNECT      = 10;
  1682.   {$EXTERNALSYM VIEW_NEWFOLDER}
  1683.   VIEW_NEWFOLDER          = 11;
  1684.   {$EXTERNALSYM VIEW_VIEWMENU}
  1685.   VIEW_VIEWMENU           = 12;
  1686.  
  1687. { icon indexes for history bitmap }
  1688.  
  1689.   {$EXTERNALSYM HIST_BACK}
  1690.   HIST_BACK               = 0;
  1691.   {$EXTERNALSYM HIST_FORWARD}
  1692.   HIST_FORWARD            = 1;
  1693.   {$EXTERNALSYM HIST_FAVORITES}
  1694.   HIST_FAVORITES          = 2;
  1695.   {$EXTERNALSYM HIST_ADDTOFAVORITES}
  1696.   HIST_ADDTOFAVORITES     = 3;
  1697.   {$EXTERNALSYM HIST_VIEWTREE}
  1698.   HIST_VIEWTREE           = 4;
  1699.  
  1700.   {$EXTERNALSYM TB_ADDBUTTONSA}
  1701.   TB_ADDBUTTONSA          = WM_USER + 20;
  1702.   {$EXTERNALSYM TB_INSERTBUTTONA}
  1703.   TB_INSERTBUTTONA        = WM_USER + 21;
  1704.   {$EXTERNALSYM TB_DELETEBUTTON}
  1705.   TB_DELETEBUTTON         = WM_USER + 22;
  1706.   {$EXTERNALSYM TB_GETBUTTON}
  1707.   TB_GETBUTTON            = WM_USER + 23;
  1708.   {$EXTERNALSYM TB_BUTTONCOUNT}
  1709.   TB_BUTTONCOUNT          = WM_USER + 24;
  1710.   {$EXTERNALSYM TB_COMMANDTOINDEX}
  1711.   TB_COMMANDTOINDEX       = WM_USER + 25;
  1712.  
  1713. type
  1714.   PTBSaveParamsA = ^TTBSaveParamsA;
  1715.   PTBSaveParamsW = ^TTBSaveParamsW;
  1716.   PTBSaveParams = PTBSaveParamsA;
  1717.   {$EXTERNALSYM tagTBSAVEPARAMSA}
  1718.   tagTBSAVEPARAMSA = packed record
  1719.     hkr: THandle;
  1720.     pszSubKey: PAnsiChar;
  1721.     pszValueName: PAnsiChar;
  1722.   end;
  1723.   {$EXTERNALSYM tagTBSAVEPARAMSW}
  1724.   tagTBSAVEPARAMSW = packed record
  1725.     hkr: THandle;
  1726.     pszSubKey: PWideChar;
  1727.     pszValueName: PWideChar;
  1728.   end;
  1729.   {$EXTERNALSYM tagTBSAVEPARAMS}
  1730.   tagTBSAVEPARAMS = tagTBSAVEPARAMSA;
  1731.   TTBSaveParamsA = tagTBSAVEPARAMSA;
  1732.   TTBSaveParamsW = tagTBSAVEPARAMSW;
  1733.   TTBSaveParams = TTBSaveParamsA;
  1734.   {$EXTERNALSYM TBSAVEPARAMSA}
  1735.   TBSAVEPARAMSA = tagTBSAVEPARAMSA;
  1736.   {$EXTERNALSYM TBSAVEPARAMSW}
  1737.   TBSAVEPARAMSW = tagTBSAVEPARAMSW;
  1738.   {$EXTERNALSYM TBSAVEPARAMS}
  1739.   TBSAVEPARAMS = TBSAVEPARAMSA;
  1740.  
  1741. const
  1742.   {$EXTERNALSYM TB_SAVERESTOREA}
  1743.   TB_SAVERESTOREA          = WM_USER + 26;
  1744.   {$EXTERNALSYM TB_ADDSTRINGA}
  1745.   TB_ADDSTRINGA            = WM_USER + 28;
  1746.   {$EXTERNALSYM TB_GETBUTTONTEXTA}
  1747.   TB_GETBUTTONTEXTA        = WM_USER + 45;
  1748.   {$EXTERNALSYM TBN_GETBUTTONINFOA}
  1749.   TBN_GETBUTTONINFOA       = TBN_FIRST-0;
  1750.  
  1751.   {$EXTERNALSYM TB_SAVERESTOREW}
  1752.   TB_SAVERESTOREW          = WM_USER + 76;
  1753.   {$EXTERNALSYM TB_ADDSTRINGW}
  1754.   TB_ADDSTRINGW            = WM_USER + 77;
  1755.   {$EXTERNALSYM TB_GETBUTTONTEXTW}
  1756.   TB_GETBUTTONTEXTW        = WM_USER + 75;
  1757.   {$EXTERNALSYM TBN_GETBUTTONINFOW}
  1758.   TBN_GETBUTTONINFOW       = TBN_FIRST-20;
  1759.  
  1760. {$IFDEF UNICODE}
  1761.   {$EXTERNALSYM TB_SAVERESTORE}
  1762.   TB_SAVERESTORE          = TB_SAVERESTOREW;
  1763.   {$EXTERNALSYM TB_ADDSTRING}
  1764.   TB_ADDSTRING            = TB_ADDSTRINGW;
  1765.   {$EXTERNALSYM TB_GETBUTTONTEXT}
  1766.   TB_GETBUTTONTEXT        = TB_GETBUTTONTEXTW;
  1767.   {$EXTERNALSYM TBN_GETBUTTONINFO}
  1768.   TBN_GETBUTTONINFO       = TBN_GETBUTTONINFOW;
  1769. {$ELSE}
  1770.   {$EXTERNALSYM TB_SAVERESTORE}
  1771.   TB_SAVERESTORE          = TB_SAVERESTOREA;
  1772.   {$EXTERNALSYM TB_ADDSTRING}
  1773.   TB_ADDSTRING            = TB_ADDSTRINGA;
  1774.   {$EXTERNALSYM TB_GETBUTTONTEXT}
  1775.   TB_GETBUTTONTEXT        = TB_GETBUTTONTEXTA;
  1776.   {$EXTERNALSYM TBN_GETBUTTONINFO}
  1777.   TBN_GETBUTTONINFO       = TBN_GETBUTTONINFOA;
  1778. {$ENDIF}
  1779.  
  1780.   {$EXTERNALSYM TB_CUSTOMIZE}
  1781.   TB_CUSTOMIZE            = WM_USER + 27;
  1782.   {$EXTERNALSYM TB_GETITEMRECT}
  1783.   TB_GETITEMRECT          = WM_USER + 29;
  1784.   {$EXTERNALSYM TB_BUTTONSTRUCTSIZE}
  1785.   TB_BUTTONSTRUCTSIZE     = WM_USER + 30;
  1786.   {$EXTERNALSYM TB_SETBUTTONSIZE}
  1787.   TB_SETBUTTONSIZE        = WM_USER + 31;
  1788.   {$EXTERNALSYM TB_SETBITMAPSIZE}
  1789.   TB_SETBITMAPSIZE        = WM_USER + 32;
  1790.   {$EXTERNALSYM TB_AUTOSIZE}
  1791.   TB_AUTOSIZE             = WM_USER + 33;
  1792.   {$EXTERNALSYM TB_GETTOOLTIPS}
  1793.   TB_GETTOOLTIPS          = WM_USER + 35;
  1794.   {$EXTERNALSYM TB_SETTOOLTIPS}
  1795.   TB_SETTOOLTIPS          = WM_USER + 36;
  1796.   {$EXTERNALSYM TB_SETPARENT}
  1797.   TB_SETPARENT            = WM_USER + 37;
  1798.   {$EXTERNALSYM TB_SETROWS}
  1799.   TB_SETROWS              = WM_USER + 39;
  1800.   {$EXTERNALSYM TB_GETROWS}
  1801.   TB_GETROWS              = WM_USER + 40;
  1802.   {$EXTERNALSYM TB_SETCMDID}
  1803.   TB_SETCMDID             = WM_USER + 42;
  1804.   {$EXTERNALSYM TB_CHANGEBITMAP}
  1805.   TB_CHANGEBITMAP         = WM_USER + 43;
  1806.   {$EXTERNALSYM TB_GETBITMAP}
  1807.   TB_GETBITMAP            = WM_USER + 44;
  1808.   {$EXTERNALSYM TB_REPLACEBITMAP}
  1809.   TB_REPLACEBITMAP        = WM_USER + 46;
  1810.   {$EXTERNALSYM TB_SETINDENT}
  1811.   TB_SETINDENT            = WM_USER + 47;
  1812.   {$EXTERNALSYM TB_SETIMAGELIST}
  1813.   TB_SETIMAGELIST         = WM_USER + 48;
  1814.   {$EXTERNALSYM TB_GETIMAGELIST}
  1815.   TB_GETIMAGELIST         = WM_USER + 49;
  1816.   {$EXTERNALSYM TB_LOADIMAGES}
  1817.   TB_LOADIMAGES           = WM_USER + 50;
  1818.   {$EXTERNALSYM TB_GETRECT}
  1819.   TB_GETRECT              = WM_USER + 51; { wParam is the Cmd instead of index }
  1820.   {$EXTERNALSYM TB_SETHOTIMAGELIST}
  1821.   TB_SETHOTIMAGELIST      = WM_USER + 52;
  1822.   {$EXTERNALSYM TB_GETHOTIMAGELIST}
  1823.   TB_GETHOTIMAGELIST      = WM_USER + 53;
  1824.   {$EXTERNALSYM TB_SETDISABLEDIMAGELIST}
  1825.   TB_SETDISABLEDIMAGELIST = WM_USER + 54;
  1826.   {$EXTERNALSYM TB_GETDISABLEDIMAGELIST}
  1827.   TB_GETDISABLEDIMAGELIST = WM_USER + 55;
  1828.   {$EXTERNALSYM TB_SETSTYLE}
  1829.   TB_SETSTYLE             = WM_USER + 56;
  1830.   {$EXTERNALSYM TB_GETSTYLE}
  1831.   TB_GETSTYLE             = WM_USER + 57;
  1832.   {$EXTERNALSYM TB_GETBUTTONSIZE}
  1833.   TB_GETBUTTONSIZE        = WM_USER + 58;
  1834.   {$EXTERNALSYM TB_SETBUTTONWIDTH}
  1835.   TB_SETBUTTONWIDTH       = WM_USER + 59;
  1836.   {$EXTERNALSYM TB_SETMAXTEXTROWS}
  1837.   TB_SETMAXTEXTROWS       = WM_USER + 60;
  1838.   {$EXTERNALSYM TB_GETTEXTROWS}
  1839.   TB_GETTEXTROWS          = WM_USER + 61;
  1840.  
  1841.   {$EXTERNALSYM TB_GETOBJECT}
  1842.   TB_GETOBJECT            = WM_USER + 62;  // wParam == IID, lParam void **ppv
  1843.   {$EXTERNALSYM TB_GETHOTITEM}
  1844.   TB_GETHOTITEM           = WM_USER + 71;
  1845.   {$EXTERNALSYM TB_SETHOTITEM}
  1846.   TB_SETHOTITEM           = WM_USER + 72;  // wParam == iHotItem
  1847.   {$EXTERNALSYM TB_SETANCHORHIGHLIGHT}
  1848.   TB_SETANCHORHIGHLIGHT   = WM_USER + 73;  // wParam == TRUE/FALSE
  1849.   {$EXTERNALSYM TB_GETANCHORHIGHLIGHT}
  1850.   TB_GETANCHORHIGHLIGHT   = WM_USER + 74;
  1851.   {$EXTERNALSYM TB_MAPACCELERATORA}
  1852.   TB_MAPACCELERATORA      = WM_USER + 78;  // wParam == ch, lParam int * pidBtn
  1853.  
  1854. type
  1855.   {$EXTERNALSYM TBINSERTMARK}
  1856.   TBINSERTMARK = packed record
  1857.     iButton: Integer;
  1858.     dwFlags: DWORD;
  1859.   end;
  1860.   PTBInsertMark = ^TTBInsertMark;
  1861.   TTBInsertMark = TBINSERTMARK;
  1862.  
  1863. const
  1864.   {$EXTERNALSYM TBIMHT_AFTER}
  1865.   TBIMHT_AFTER      = $00000001; // TRUE = insert After iButton, otherwise before
  1866.   {$EXTERNALSYM TBIMHT_BACKGROUND}
  1867.   TBIMHT_BACKGROUND = $00000002; // TRUE iff missed buttons completely
  1868.  
  1869.   {$EXTERNALSYM TB_GETINSERTMARK}
  1870.   TB_GETINSERTMARK        = WM_USER + 79;  // lParam == LPTBINSERTMARK
  1871.   {$EXTERNALSYM TB_SETINSERTMARK}
  1872.   TB_SETINSERTMARK        = WM_USER + 80;  // lParam == LPTBINSERTMARK
  1873.   {$EXTERNALSYM TB_INSERTMARKHITTEST}
  1874.   TB_INSERTMARKHITTEST    = WM_USER + 81;  // wParam == LPPOINT lParam == LPTBINSERTMARK
  1875.   {$EXTERNALSYM TB_MOVEBUTTON}
  1876.   TB_MOVEBUTTON           = WM_USER + 82;
  1877.   {$EXTERNALSYM TB_GETMAXSIZE}
  1878.   TB_GETMAXSIZE           = WM_USER + 83;  // lParam == LPSIZE
  1879.   {$EXTERNALSYM TB_SETEXTENDEDSTYLE}
  1880.   TB_SETEXTENDEDSTYLE     = WM_USER + 84;  // For TBSTYLE_EX_*
  1881.   {$EXTERNALSYM TB_GETEXTENDEDSTYLE}
  1882.   TB_GETEXTENDEDSTYLE     = WM_USER + 85;  // For TBSTYLE_EX_*
  1883.   {$EXTERNALSYM TB_GETPADDING}
  1884.   TB_GETPADDING           = WM_USER + 86;
  1885.   {$EXTERNALSYM TB_SETPADDING}
  1886.   TB_SETPADDING           = WM_USER + 87;
  1887.   {$EXTERNALSYM TB_SETINSERTMARKCOLOR}
  1888.   TB_SETINSERTMARKCOLOR   = WM_USER + 88;
  1889.   {$EXTERNALSYM TB_GETINSERTMARKCOLOR}
  1890.   TB_GETINSERTMARKCOLOR   = WM_USER + 89;
  1891.  
  1892.   {$EXTERNALSYM TB_SETCOLORSCHEME}
  1893.   TB_SETCOLORSCHEME       = CCM_SETCOLORSCHEME;  // lParam is color scheme
  1894.   {$EXTERNALSYM TB_GETCOLORSCHEME}
  1895.   TB_GETCOLORSCHEME       = CCM_GETCOLORSCHEME;    // fills in COLORSCHEME pointed to by lParam
  1896.  
  1897.   {$EXTERNALSYM TB_SETUNICODEFORMAT}
  1898.   TB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  1899.   {$EXTERNALSYM TB_GETUNICODEFORMAT}
  1900.   TB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  1901.  
  1902.   {$EXTERNALSYM TB_MAPACCELERATORW}
  1903.   TB_MAPACCELERATORW      = WM_USER + 90;  // wParam == ch, lParam int * pidBtn
  1904. {$IFDEF UNICODE}
  1905.   {$EXTERNALSYM TB_MAPACCELERATOR}
  1906.   TB_MAPACCELERATOR       = TB_MAPACCELERATORW;
  1907. {$ELSE}
  1908.   {$EXTERNALSYM TB_MAPACCELERATOR}
  1909.   TB_MAPACCELERATOR       = TB_MAPACCELERATORA;
  1910. {$ENDIF}
  1911.  
  1912. type
  1913.   {$EXTERNALSYM TBREPLACEBITMAP}
  1914.   TBREPLACEBITMAP = packed record
  1915.     hInstOld: THandle;
  1916.     nIDOld: Cardinal;
  1917.     hInstNew: THandle;
  1918.     nIDNew: Cardinal;
  1919.     nButtons: Integer;
  1920.   end;
  1921.   PTBReplaceBitmap = ^TTBReplaceBitmap;
  1922.   TTBReplaceBitmap = TBREPLACEBITMAP;
  1923.  
  1924. const  
  1925.   {$EXTERNALSYM TBBF_LARGE}
  1926.   TBBF_LARGE              = $0001;
  1927.  
  1928.   {$EXTERNALSYM TB_GETBITMAPFLAGS}
  1929.   TB_GETBITMAPFLAGS       = WM_USER + 41;
  1930.  
  1931.   {$EXTERNALSYM TBIF_IMAGE}
  1932.   TBIF_IMAGE              = $00000001;
  1933.   {$EXTERNALSYM TBIF_TEXT}
  1934.   TBIF_TEXT               = $00000002;
  1935.   {$EXTERNALSYM TBIF_STATE}
  1936.   TBIF_STATE              = $00000004;
  1937.   {$EXTERNALSYM TBIF_STYLE}
  1938.   TBIF_STYLE              = $00000008;
  1939.   {$EXTERNALSYM TBIF_LPARAM}
  1940.   TBIF_LPARAM             = $00000010;
  1941.   {$EXTERNALSYM TBIF_COMMAND}
  1942.   TBIF_COMMAND            = $00000020;
  1943.   {$EXTERNALSYM TBIF_SIZE}
  1944.   TBIF_SIZE               = $00000040;
  1945.  
  1946. type
  1947.   {$EXTERNALSYM TBBUTTONINFOA}
  1948.   TBBUTTONINFOA = packed record
  1949.     cbSize: UINT;
  1950.     dwMask: DWORD;
  1951.     idCommand: Integer;
  1952.     iImage: Integer;
  1953.     fsState: Byte;
  1954.     fsStyle: Byte;
  1955.     cx: Word;
  1956.     lParam: DWORD;
  1957.     pszText: PAnsiChar;
  1958.     cchText: Integer;
  1959.   end;
  1960.   {$EXTERNALSYM TBBUTTONINFOW}
  1961.   TBBUTTONINFOW = packed record
  1962.     cbSize: UINT;
  1963.     dwMask: DWORD;
  1964.     idCommand: Integer;
  1965.     iImage: Integer;
  1966.     fsState: Byte;
  1967.     fsStyle: Byte;
  1968.     cx: Word;
  1969.     lParam: DWORD;
  1970.     pszText: PWideChar;
  1971.     cchText: Integer;
  1972.   end;
  1973.   {$EXTERNALSYM TBBUTTONINFO}
  1974.   TBBUTTONINFO = TBBUTTONINFOA;
  1975.   PTBButtonInfoA = ^TTBButtonInfoA;
  1976.   PTBButtonInfoW = ^TTBButtonInfoW;
  1977.   PTBButtonInfo = PTBButtonInfoA;
  1978.   TTBButtonInfoA = TBBUTTONINFOA;
  1979.   TTBButtonInfoW = TBBUTTONINFOW;
  1980.   TTBButtonInfo = TTBButtonInfoA;
  1981.  
  1982. const
  1983.   // BUTTONINFO APIs do NOT support the string pool.
  1984.   {$EXTERNALSYM TB_GETBUTTONINFOW}
  1985.   TB_GETBUTTONINFOW        = WM_USER + 63;
  1986.   {$EXTERNALSYM TB_SETBUTTONINFOW}
  1987.   TB_SETBUTTONINFOW        = WM_USER + 64;
  1988.   {$EXTERNALSYM TB_GETBUTTONINFOA}
  1989.   TB_GETBUTTONINFOA        = WM_USER + 65;
  1990.   {$EXTERNALSYM TB_SETBUTTONINFOA}
  1991.   TB_SETBUTTONINFOA        = WM_USER + 66;
  1992. {$IFDEF UNICODE}
  1993.   {$EXTERNALSYM TB_GETBUTTONINFO}
  1994.   TB_GETBUTTONINFO         = TB_GETBUTTONINFOW;
  1995.   {$EXTERNALSYM TB_SETBUTTONINFO}
  1996.   TB_SETBUTTONINFO         = TB_SETBUTTONINFOW;
  1997. {$ELSE}
  1998.   {$EXTERNALSYM TB_GETBUTTONINFO}
  1999.   TB_GETBUTTONINFO         = TB_GETBUTTONINFOA;
  2000.   {$EXTERNALSYM TB_SETBUTTONINFO}
  2001.   TB_SETBUTTONINFO         = TB_SETBUTTONINFOA;
  2002. {$ENDIF}
  2003.  
  2004.   {$EXTERNALSYM TB_INSERTBUTTONW}
  2005.   TB_INSERTBUTTONW        = WM_USER + 67;
  2006.   {$EXTERNALSYM TB_ADDBUTTONSW}
  2007.   TB_ADDBUTTONSW          = WM_USER + 68;
  2008.  
  2009.   {$EXTERNALSYM TB_HITTEST}
  2010.   TB_HITTEST              = WM_USER + 69;
  2011.  
  2012.   // New post Win95/NT4 for InsertButton and AddButton.  if iString member
  2013.   // is a pointer to a string, it will be handled as a string like listview
  2014.   // = although LPSTR_TEXTCALLBACK is not supported;.
  2015. {$IFDEF UNICODE}
  2016.   {$EXTERNALSYM TB_INSERTBUTTON}
  2017.   TB_INSERTBUTTON         = TB_INSERTBUTTONW;
  2018.   {$EXTERNALSYM TB_ADDBUTTONS}
  2019.   TB_ADDBUTTONS           = TB_ADDBUTTONSW;
  2020. {$ELSE}
  2021.   {$EXTERNALSYM TB_INSERTBUTTON}
  2022.   TB_INSERTBUTTON         = TB_INSERTBUTTONA;
  2023.   {$EXTERNALSYM TB_ADDBUTTONS}
  2024.   TB_ADDBUTTONS           = TB_ADDBUTTONSA;
  2025. {$ENDIF}
  2026.  
  2027.   {$EXTERNALSYM TB_SETDRAWTEXTFLAGS}
  2028.   TB_SETDRAWTEXTFLAGS     = WM_USER + 70;  // wParam == mask lParam == bit values
  2029.  
  2030.   {$EXTERNALSYM TBN_BEGINDRAG}
  2031.   TBN_BEGINDRAG           = TBN_FIRST-1;
  2032.   {$EXTERNALSYM TBN_ENDDRAG}
  2033.   TBN_ENDDRAG             = TBN_FIRST-2;
  2034.   {$EXTERNALSYM TBN_BEGINADJUST}
  2035.   TBN_BEGINADJUST         = TBN_FIRST-3;
  2036.   {$EXTERNALSYM TBN_ENDADJUST}
  2037.   TBN_ENDADJUST           = TBN_FIRST-4;
  2038.   {$EXTERNALSYM TBN_RESET}
  2039.   TBN_RESET               = TBN_FIRST-5;
  2040.   {$EXTERNALSYM TBN_QUERYINSERT}
  2041.   TBN_QUERYINSERT         = TBN_FIRST-6;
  2042.   {$EXTERNALSYM TBN_QUERYDELETE}
  2043.   TBN_QUERYDELETE         = TBN_FIRST-7;
  2044.   {$EXTERNALSYM TBN_TOOLBARCHANGE}
  2045.   TBN_TOOLBARCHANGE       = TBN_FIRST-8;
  2046.   {$EXTERNALSYM TBN_CUSTHELP}
  2047.   TBN_CUSTHELP            = TBN_FIRST-9;
  2048.   {$EXTERNALSYM TBN_DROPDOWN}
  2049.   TBN_DROPDOWN            = TBN_FIRST-10;
  2050.   {$EXTERNALSYM TBN_CLOSEUP}
  2051.   TBN_CLOSEUP             = TBN_FIRST-11;
  2052.   {$EXTERNALSYM TBN_GETOBJECT}
  2053.   TBN_GETOBJECT           = TBN_FIRST-12;
  2054.  
  2055. type
  2056.   // Structure for TBN_HOTITEMCHANGE notification
  2057.   {$EXTERNALSYM tagNMTBHOTITEM}
  2058.   tagNMTBHOTITEM = packed record
  2059.     hdr: TNMHdr;
  2060.     idOld: Integer;
  2061.     idNew: Integer;
  2062.     dwFlags: DWORD;           // HICF_*
  2063.   end;
  2064.   PNMTBHotItem = ^TNMTBHotItem;
  2065.   TNMTBHotItem = tagNMTBHOTITEM;
  2066.  
  2067. const
  2068.   // Hot item change flags
  2069.   {$EXTERNALSYM HICF_OTHER}
  2070.   HICF_OTHER          = $00000000;
  2071.   {$EXTERNALSYM HICF_MOUSE}
  2072.   HICF_MOUSE          = $00000001;          // Triggered by mouse
  2073.   {$EXTERNALSYM HICF_ARROWKEYS}
  2074.   HICF_ARROWKEYS      = $00000002;          // Triggered by arrow keys
  2075.   {$EXTERNALSYM HICF_ACCELERATOR}
  2076.   HICF_ACCELERATOR    = $00000004;          // Triggered by accelerator
  2077.   {$EXTERNALSYM HICF_DUPACCEL}
  2078.   HICF_DUPACCEL       = $00000008;          // This accelerator is not unique
  2079.   {$EXTERNALSYM HICF_ENTERING}
  2080.   HICF_ENTERING       = $00000010;          // idOld is invalid
  2081.   {$EXTERNALSYM HICF_LEAVING}
  2082.   HICF_LEAVING        = $00000020;          // idNew is invalid
  2083.   {$EXTERNALSYM HICF_RESELECT}
  2084.   HICF_RESELECT       = $00000040;          // hot item reselected
  2085.  
  2086.   {$EXTERNALSYM TBN_HOTITEMCHANGE}
  2087.   TBN_HOTITEMCHANGE       = TBN_FIRST - 13;
  2088.   {$EXTERNALSYM TBN_DRAGOUT}
  2089.   TBN_DRAGOUT             = TBN_FIRST - 14; // this is sent when the user clicks down on a button then drags off the button
  2090.   {$EXTERNALSYM TBN_DELETINGBUTTON}
  2091.   TBN_DELETINGBUTTON      = TBN_FIRST - 15; // uses TBNOTIFY
  2092.   {$EXTERNALSYM TBN_GETDISPINFOA}
  2093.   TBN_GETDISPINFOA        = TBN_FIRST - 16; // This is sent when the  toolbar needs  some display information
  2094.   {$EXTERNALSYM TBN_GETDISPINFOW}
  2095.   TBN_GETDISPINFOW        = TBN_FIRST - 17; // This is sent when the  toolbar needs  some display information
  2096.   {$EXTERNALSYM TBN_GETINFOTIPA}
  2097.   TBN_GETINFOTIPA         = TBN_FIRST - 18;
  2098.   {$EXTERNALSYM TBN_GETINFOTIPW}
  2099.   TBN_GETINFOTIPW         = TBN_FIRST - 19;
  2100.  
  2101. type
  2102.   {$EXTERNALSYM tagNMTBGETINFOTIPA}
  2103.   tagNMTBGETINFOTIPA = packed record
  2104.     hdr: TNMHdr;
  2105.     pszText: PAnsiChar;
  2106.     cchTextMax: Integer;
  2107.     iItem: Integer;
  2108.     lParam: LPARAM;
  2109.   end;
  2110.   {$EXTERNALSYM tagNMTBGETINFOTIPW}
  2111.   tagNMTBGETINFOTIPW = packed record
  2112.     hdr: TNMHdr;
  2113.     pszText: PWideChar;
  2114.     cchTextMax: Integer;
  2115.     iItem: Integer;
  2116.     lParam: LPARAM;
  2117.   end;
  2118.   {$EXTERNALSYM tagNMTBGETINFOTIP}
  2119.   tagNMTBGETINFOTIP = tagNMTBGETINFOTIPA;
  2120.   PNMTBGetInfoTipA = ^TNMTBGetInfoTipA;
  2121.   PNMTBGetInfoTipW = ^TNMTBGetInfoTipW;
  2122.   PNMTBGetInfoTip = PNMTBGetInfoTipA;
  2123.   TNMTBGetInfoTipA = tagNMTBGETINFOTIPA;
  2124.   TNMTBGetInfoTipW = tagNMTBGETINFOTIPW;
  2125.   TNMTBGetInfoTip = TNMTBGetInfoTipA;
  2126.  
  2127. const
  2128.   {$EXTERNALSYM TBNF_IMAGE}
  2129.   TBNF_IMAGE              = $00000001;
  2130.   {$EXTERNALSYM TBNF_TEXT}
  2131.   TBNF_TEXT               = $00000002;
  2132.   {$EXTERNALSYM TBNF_DI_SETITEM}
  2133.   TBNF_DI_SETITEM         = $10000000;
  2134.  
  2135. type
  2136.   {$EXTERNALSYM NMTBDISPINFOA}
  2137.   NMTBDISPINFOA = packed record
  2138.     hdr: TNMHdr;
  2139.     dwMask: DWORD;      // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  2140.     idCommand: Integer; // [in] id of button we're requesting info for
  2141.     lParam: DWORD;      // [in] lParam of button
  2142.     iImage: Integer;    // [out] image index
  2143.     pszText: PAnsiChar;    // [out] new text for item
  2144.     cchText: Integer;   // [in] size of buffer pointed to by pszText
  2145.   end;
  2146.   {$EXTERNALSYM NMTBDISPINFOW}
  2147.   NMTBDISPINFOW = packed record
  2148.     hdr: TNMHdr;
  2149.     dwMask: DWORD;      // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  2150.     idCommand: Integer; // [in] id of button we're requesting info for
  2151.     lParam: DWORD;      // [in] lParam of button
  2152.     iImage: Integer;    // [out] image index
  2153.     pszText: PWideChar;    // [out] new text for item
  2154.     cchText: Integer;   // [in] size of buffer pointed to by pszText
  2155.   end;
  2156.   {$EXTERNALSYM NMTBDISPINFO}
  2157.   NMTBDISPINFO = NMTBDISPINFOA;
  2158.   PNMTBDispInfoA = ^TNMTBDispInfoA;
  2159.   PNMTBDispInfoW = ^TNMTBDispInfoW;
  2160.   PNMTBDispInfo = PNMTBDispInfoA;
  2161.   TNMTBDispInfoA = NMTBDISPINFOA;
  2162.   TNMTBDispInfoW = NMTBDISPINFOW;
  2163.   TNMTBDispInfo = TNMTBDispInfoA;
  2164.  
  2165. const
  2166.   // Return codes for TBN_DROPDOWN
  2167.   {$EXTERNALSYM TBDDRET_DEFAULT}
  2168.   TBDDRET_DEFAULT         = 0;
  2169.   {$EXTERNALSYM TBDDRET_NODEFAULT}
  2170.   TBDDRET_NODEFAULT       = 1;
  2171.   {$EXTERNALSYM TBDDRET_TREATPRESSED}
  2172.   TBDDRET_TREATPRESSED    = 2;       // Treat as a standard press button
  2173.  
  2174. type
  2175.   {$EXTERNALSYM tagNMTOOLBARA}
  2176.   tagNMTOOLBARA = packed record
  2177.     hdr: TNMHdr;
  2178.     iItem: Integer;
  2179.     tbButton: TTBButton;
  2180.     cchText: Integer;
  2181.     pszText: PAnsiChar;
  2182.   end;
  2183.   {$EXTERNALSYM tagNMTOOLBARW}
  2184.   tagNMTOOLBARW = packed record
  2185.     hdr: TNMHdr;
  2186.     iItem: Integer;
  2187.     tbButton: TTBButton;
  2188.     cchText: Integer;
  2189.     pszText: PWideChar;
  2190.   end;
  2191.   {$EXTERNALSYM tagNMTOOLBAR}
  2192.   tagNMTOOLBAR = tagNMTOOLBARA;
  2193.   PNMToolBarA = ^TNMToolBarA;
  2194.   PNMToolBarW = ^TNMToolBarW;
  2195.   PNMToolBar = PNMToolBarA;
  2196.   TNMToolBarA = tagNMTOOLBARA;
  2197.   TNMToolBarW = tagNMTOOLBARW;
  2198.   TNMToolBar = TNMToolBarA;
  2199.  
  2200. { ====== REBAR CONTROL =================== }
  2201.  
  2202. const
  2203.   {$EXTERNALSYM REBARCLASSNAME}
  2204.   REBARCLASSNAME = 'ReBarWindow32';
  2205.  
  2206. type
  2207.   {$EXTERNALSYM tagREBARINFO}
  2208.   tagREBARINFO = packed record
  2209.     cbSize: UINT;
  2210.     fMask: UINT;
  2211.     himl: HIMAGELIST;
  2212.   end;
  2213.   PReBarInfo = ^TReBarInfo;
  2214.   TReBarInfo = tagREBARINFO;
  2215.  
  2216. const
  2217.   {$EXTERNALSYM RBIM_IMAGELIST}
  2218.   RBIM_IMAGELIST    = $00000001;
  2219.  
  2220.   {$EXTERNALSYM RBS_TOOLTIPS}
  2221.   RBS_TOOLTIPS      = $00000100;
  2222.   {$EXTERNALSYM RBS_VARHEIGHT}
  2223.   RBS_VARHEIGHT     = $00000200;
  2224.   {$EXTERNALSYM RBS_BANDBORDERS}
  2225.   RBS_BANDBORDERS   = $00000400;
  2226.   {$EXTERNALSYM RBS_FIXEDORDER}
  2227.   RBS_FIXEDORDER    = $00000800;
  2228.  
  2229.   {$EXTERNALSYM RBBS_BREAK}
  2230.   RBBS_BREAK        = $00000001;  // break to new line
  2231.   {$EXTERNALSYM RBBS_FIXEDSIZE}
  2232.   RBBS_FIXEDSIZE    = $00000002;  // band can't be sized
  2233.   {$EXTERNALSYM RBBS_CHILDEDGE}
  2234.   RBBS_CHILDEDGE    = $00000004;  // edge around top and bottom of child window
  2235.   {$EXTERNALSYM RBBS_HIDDEN}
  2236.   RBBS_HIDDEN       = $00000008;  // don't show
  2237.   {$EXTERNALSYM RBBS_NOVERT}
  2238.   RBBS_NOVERT       = $00000010;  // don't show when vertical
  2239.   {$EXTERNALSYM RBBS_FIXEDBMP}
  2240.   RBBS_FIXEDBMP     = $00000020;  // bitmap doesn't move during band resize
  2241.   {$EXTERNALSYM RBBS_VARIABLEHEIGHT}
  2242.   RBBS_VARIABLEHEIGHT = $00000040;  // allow autosizing of this child vertically
  2243.   {$EXTERNALSYM RBBS_GRIPPERALWAYS}
  2244.   RBBS_GRIPPERALWAYS  = $00000080;  // always show the gripper
  2245.   {$EXTERNALSYM RBBS_NOGRIPPER}
  2246.   RBBS_NOGRIPPER      = $00000100;  // never show the gripper
  2247.  
  2248.   {$EXTERNALSYM RBBIM_STYLE}
  2249.   RBBIM_STYLE       = $00000001;
  2250.   {$EXTERNALSYM RBBIM_COLORS}
  2251.   RBBIM_COLORS      = $00000002;
  2252.   {$EXTERNALSYM RBBIM_TEXT}
  2253.   RBBIM_TEXT        = $00000004;
  2254.   {$EXTERNALSYM RBBIM_IMAGE}
  2255.   RBBIM_IMAGE       = $00000008;
  2256.   {$EXTERNALSYM RBBIM_CHILD}
  2257.   RBBIM_CHILD       = $00000010;
  2258.   {$EXTERNALSYM RBBIM_CHILDSIZE}
  2259.   RBBIM_CHILDSIZE   = $00000020;
  2260.   {$EXTERNALSYM RBBIM_SIZE}
  2261.   RBBIM_SIZE        = $00000040;
  2262.   {$EXTERNALSYM RBBIM_BACKGROUND}
  2263.   RBBIM_BACKGROUND  = $00000080;
  2264.   {$EXTERNALSYM RBBIM_ID}
  2265.   RBBIM_ID          = $00000100;
  2266.   {$EXTERNALSYM RBBIM_IDEALSIZE}
  2267.   RBBIM_IDEALSIZE     = $00000200;
  2268.   {$EXTERNALSYM RBBIM_LPARAM}
  2269.   RBBIM_LPARAM        = $00000400;
  2270.   {$EXTERNALSYM RBBIM_HEADERSIZE}
  2271.   RBBIM_HEADERSIZE    = $00000800;  // control the size of the header
  2272.  
  2273. type
  2274.   {$EXTERNALSYM tagREBARBANDINFOA}
  2275.   tagREBARBANDINFOA = packed record
  2276.     cbSize: UINT;
  2277.     fMask: UINT;
  2278.     fStyle: UINT;
  2279.     clrFore: TColorRef;
  2280.     clrBack: TColorRef;
  2281.     lpText: PAnsiChar;
  2282.     cch: UINT;
  2283.     iImage: Integer;
  2284.     hwndChild: HWnd;
  2285.     cxMinChild: UINT;
  2286.     cyMinChild: UINT;
  2287.     cx: UINT;
  2288.     hbmBack: HBitmap;
  2289.     wID: UINT;
  2290.     cyChild: UINT;
  2291.     cyMaxChild: UINT;
  2292.     cyIntegral: UINT;
  2293.     cxIdeal: UINT;
  2294.     lParam: LPARAM;
  2295.     cxHeader: UINT;
  2296.   end;
  2297.   {$EXTERNALSYM tagREBARBANDINFOW}
  2298.   tagREBARBANDINFOW = packed record
  2299.     cbSize: UINT;
  2300.     fMask: UINT;
  2301.     fStyle: UINT;
  2302.     clrFore: TColorRef;
  2303.     clrBack: TColorRef;
  2304.     lpText: PWideChar;
  2305.     cch: UINT;
  2306.     iImage: Integer;
  2307.     hwndChild: HWnd;
  2308.     cxMinChild: UINT;
  2309.     cyMinChild: UINT;
  2310.     cx: UINT;
  2311.     hbmBack: HBitmap;
  2312.     wID: UINT;
  2313.     cyChild: UINT;
  2314.     cyMaxChild: UINT;
  2315.     cyIntegral: UINT;
  2316.     cxIdeal: UINT;
  2317.     lParam: LPARAM;
  2318.     cxHeader: UINT;
  2319.   end;
  2320.   {$EXTERNALSYM tagREBARBANDINFO}
  2321.   tagREBARBANDINFO = tagREBARBANDINFOA;
  2322.   PReBarBandInfoA = ^TReBarBandInfoA;
  2323.   PReBarBandInfoW = ^TReBarBandInfoW;
  2324.   PReBarBandInfo = PReBarBandInfoA;
  2325.   TReBarBandInfoA = tagREBARBANDINFOA;
  2326.   TReBarBandInfoW = tagREBARBANDINFOW;
  2327.   TReBarBandInfo = TReBarBandInfoA;
  2328.  
  2329. const
  2330.   {$EXTERNALSYM RB_INSERTBANDA}
  2331.   RB_INSERTBANDA     = WM_USER +  1;
  2332.   {$EXTERNALSYM RB_DELETEBAND}
  2333.   RB_DELETEBAND      = WM_USER +  2;
  2334.   {$EXTERNALSYM RB_GETBARINFO}
  2335.   RB_GETBARINFO      = WM_USER +  3;
  2336.   {$EXTERNALSYM RB_SETBARINFO}
  2337.   RB_SETBARINFO      = WM_USER +  4;
  2338.   RB_GETBANDINFO_PRE_IE4     = WM_USER +  5;
  2339.   {$EXTERNALSYM RB_SETBANDINFOA}
  2340.   RB_SETBANDINFOA    = WM_USER +  6;
  2341.   {$EXTERNALSYM RB_SETPARENT}
  2342.   RB_SETPARENT       = WM_USER +  7;
  2343.   {$EXTERNALSYM RB_HITTEST}
  2344.   RB_HITTEST         = WM_USER +  8;
  2345.   {$EXTERNALSYM RB_GETRECT}
  2346.   RB_GETRECT         = WM_USER +  9;
  2347.   {$EXTERNALSYM RB_INSERTBANDW}
  2348.   RB_INSERTBANDW     = WM_USER +  10;
  2349.   {$EXTERNALSYM RB_SETBANDINFOW}
  2350.   RB_SETBANDINFOW    = WM_USER +  11;
  2351.   {$EXTERNALSYM RB_GETBANDCOUNT}
  2352.   RB_GETBANDCOUNT    = WM_USER +  12;
  2353.   {$EXTERNALSYM RB_GETROWCOUNT}
  2354.   RB_GETROWCOUNT     = WM_USER +  13;
  2355.   {$EXTERNALSYM RB_GETROWHEIGHT}
  2356.   RB_GETROWHEIGHT    = WM_USER +  14;
  2357.   {$EXTERNALSYM RB_IDTOINDEX}
  2358.   RB_IDTOINDEX       = WM_USER +  16; // wParam == id
  2359.   {$EXTERNALSYM RB_GETTOOLTIPS}
  2360.   RB_GETTOOLTIPS     = WM_USER +  17;
  2361.   {$EXTERNALSYM RB_SETTOOLTIPS}
  2362.   RB_SETTOOLTIPS     = WM_USER +  18;
  2363.   {$EXTERNALSYM RB_SETBKCOLOR}
  2364.   RB_SETBKCOLOR      = WM_USER +  19; // sets the default BK color
  2365.   {$EXTERNALSYM RB_GETBKCOLOR}
  2366.   RB_GETBKCOLOR      = WM_USER +  20; // defaults to CLR_NONE
  2367.   {$EXTERNALSYM RB_SETTEXTCOLOR}
  2368.   RB_SETTEXTCOLOR    = WM_USER +  21;
  2369.   {$EXTERNALSYM RB_GETTEXTCOLOR}
  2370.   RB_GETTEXTCOLOR    = WM_USER +  22; // defaults to 0x00000000
  2371.   {$EXTERNALSYM RB_SIZETORECT}
  2372.   RB_SIZETORECT      = WM_USER +  23; // resize the rebar/break bands and such to this rect (lparam;
  2373.  
  2374.   // for manual drag control
  2375.   // lparam == cursor pos
  2376.         // -1 means do it yourself.
  2377.         // -2 means use what you had saved before
  2378.   {$EXTERNALSYM RB_BEGINDRAG}
  2379.   RB_BEGINDRAG    = WM_USER + 24;
  2380.   {$EXTERNALSYM RB_ENDDRAG}
  2381.   RB_ENDDRAG      = WM_USER + 25;
  2382.   {$EXTERNALSYM RB_DRAGMOVE}
  2383.   RB_DRAGMOVE     = WM_USER + 26;
  2384.   {$EXTERNALSYM RB_GETBARHEIGHT}
  2385.   RB_GETBARHEIGHT = WM_USER + 27;
  2386.   {$EXTERNALSYM RB_GETBANDINFOW}
  2387.   RB_GETBANDINFOW = WM_USER + 28;
  2388.   {$EXTERNALSYM RB_GETBANDINFOA}
  2389.   RB_GETBANDINFOA = WM_USER + 29;
  2390.  
  2391.   {$EXTERNALSYM RB_MINIMIZEBAND}
  2392.   RB_MINIMIZEBAND = WM_USER + 30;
  2393.   {$EXTERNALSYM RB_MAXIMIZEBAND}
  2394.   RB_MAXIMIZEBAND = WM_USER + 31;
  2395.  
  2396.   {$EXTERNALSYM RB_GETDROPTARGET}
  2397.   RB_GETDROPTARGET = CCM_GETDROPTARGET;
  2398.  
  2399.   {$EXTERNALSYM RB_GETBANDBORDERS}
  2400.   RB_GETBANDBORDERS = WM_USER + 34;  // returns in lparam = lprc the amount of edges added to band wparam
  2401.  
  2402.   {$EXTERNALSYM RB_SHOWBAND}
  2403.   RB_SHOWBAND     = WM_USER + 35;      // show/hide band
  2404.   {$EXTERNALSYM RB_SETPALETTE}
  2405.   RB_SETPALETTE   = WM_USER + 37;
  2406.   {$EXTERNALSYM RB_GETPALETTE}
  2407.   RB_GETPALETTE   = WM_USER + 38;
  2408.   {$EXTERNALSYM RB_MOVEBAND}
  2409.   RB_MOVEBAND     = WM_USER + 39;
  2410.  
  2411.   {$EXTERNALSYM RB_SETUNICODEFORMAT}
  2412.   RB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  2413.   {$EXTERNALSYM RB_GETUNICODEFORMAT}
  2414.   RB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  2415.  
  2416. {$IFDEF UNICODE}
  2417.   {$EXTERNALSYM RB_INSERTBAND}
  2418.   RB_INSERTBAND      = RB_INSERTBANDW;
  2419.   {$EXTERNALSYM RB_SETBANDINFO}
  2420.   RB_SETBANDINFO     = RB_SETBANDINFOW;
  2421.   {$EXTERNALSYM RB_GETBANDINFO}
  2422.   RB_GETBANDINFO     = RB_GETBANDINFOW;
  2423. {$ELSE}
  2424.   {$EXTERNALSYM RB_INSERTBAND}
  2425.   RB_INSERTBAND      = RB_INSERTBANDA;
  2426.   {$EXTERNALSYM RB_SETBANDINFO}
  2427.   RB_SETBANDINFO     = RB_SETBANDINFOA;
  2428.   {$EXTERNALSYM RB_GETBANDINFO}
  2429.   RB_GETBANDINFO     = RB_GETBANDINFOA;
  2430. {$ENDIF}
  2431.  
  2432.   {$EXTERNALSYM RBN_HEIGHTCHANGE}
  2433.   RBN_HEIGHTCHANGE   = RBN_FIRST - 0;
  2434.  
  2435.   {$EXTERNALSYM RBN_GETOBJECT}
  2436.   RBN_GETOBJECT       = RBN_FIRST - 1;
  2437.   {$EXTERNALSYM RBN_LAYOUTCHANGED}
  2438.   RBN_LAYOUTCHANGED   = RBN_FIRST - 2;
  2439.   {$EXTERNALSYM RBN_AUTOSIZE}
  2440.   RBN_AUTOSIZE        = RBN_FIRST - 3;
  2441.   {$EXTERNALSYM RBN_BEGINDRAG}
  2442.   RBN_BEGINDRAG       = RBN_FIRST - 4;
  2443.   {$EXTERNALSYM RBN_ENDDRAG}
  2444.   RBN_ENDDRAG         = RBN_FIRST - 5;
  2445.   {$EXTERNALSYM RBN_DELETINGBAND}
  2446.   RBN_DELETINGBAND    = RBN_FIRST - 6;     // Uses NMREBAR
  2447.   {$EXTERNALSYM RBN_DELETEDBAND}
  2448.   RBN_DELETEDBAND     = RBN_FIRST - 7;     // Uses NMREBAR
  2449.   {$EXTERNALSYM RBN_CHILDSIZE}
  2450.   RBN_CHILDSIZE       = RBN_FIRST - 8;
  2451.  
  2452. type
  2453.   {$EXTERNALSYM tagNMREBARCHILDSIZE}
  2454.   tagNMREBARCHILDSIZE = packed record
  2455.     hdr: TNMHdr;
  2456.     uBand: UINT;
  2457.     wID: UINT;
  2458.     rcChild: TRect;
  2459.     rcBand: TRect;
  2460.   end;
  2461.   PNMReBarChildSize = ^TNMReBarChildSize;
  2462.   TNMReBarChildSize = tagNMREBARCHILDSIZE;
  2463.  
  2464.   {$EXTERNALSYM tagNMREBAR}
  2465.   tagNMREBAR = packed record
  2466.     hdr: TNMHdr;
  2467.     dwMask: DWORD;           // RBNM_*
  2468.     uBand: UINT;
  2469.     fStyle: UINT;
  2470.     wID: UINT;
  2471.     lParam: LPARAM;
  2472.   end;
  2473.   PNMReBar = ^TNMReBar;
  2474.   TNMReBar = tagNMREBAR;
  2475.  
  2476. const
  2477.   // Mask flags for NMREBAR
  2478.   {$EXTERNALSYM RBNM_ID}
  2479.   RBNM_ID         = $00000001;
  2480.   {$EXTERNALSYM RBNM_STYLE}
  2481.   RBNM_STYLE      = $00000002;
  2482.   {$EXTERNALSYM RBNM_LPARAM}
  2483.   RBNM_LPARAM     = $00000004;
  2484.  
  2485. type
  2486.   {$EXTERNALSYM tagNMRBAUTOSIZE}
  2487.   tagNMRBAUTOSIZE = packed record
  2488.     hdr: TNMHdr;
  2489.     fChanged: BOOL;
  2490.     rcTarget: TRect;
  2491.     rcActual: TRect;
  2492.   end;
  2493.   PNMRBAutoSize = ^TNMRBAutoSize;
  2494.   TNMRBAutoSize = tagNMRBAUTOSIZE;
  2495.  
  2496. const
  2497.   {$EXTERNALSYM RBHT_NOWHERE}
  2498.   RBHT_NOWHERE    = $0001;
  2499.   {$EXTERNALSYM RBHT_CAPTION}
  2500.   RBHT_CAPTION    = $0002;
  2501.   {$EXTERNALSYM RBHT_CLIENT}
  2502.   RBHT_CLIENT     = $0003;
  2503.   {$EXTERNALSYM RBHT_GRABBER}
  2504.   RBHT_GRABBER    = $0004;
  2505.  
  2506. type
  2507.   {$EXTERNALSYM _RB_HITTESTINFO}
  2508.   _RB_HITTESTINFO = packed record
  2509.     pt: TPoint;
  2510.     flags: UINT;
  2511.     iBand: Integer;
  2512.   end;
  2513.   PRBHitTestInfo = ^TRBHitTestInfo;
  2514.   TRBHitTestInfo = _RB_HITTESTINFO;
  2515.  
  2516. { ====== TOOLTIPS CONTROL ========================== }
  2517.  
  2518. const
  2519.   {$EXTERNALSYM TOOTIPS_CLASS}
  2520.   TOOTIPS_CLASS = 'tooltips_class32';
  2521.  
  2522. type
  2523.   PToolInfoA = ^TToolInfoA;
  2524.   PToolInfoW = ^TToolInfoW;
  2525.   PToolInfo = PToolInfoA;
  2526.   {$EXTERNALSYM tagTOOLINFOA}
  2527.   tagTOOLINFOA = packed record
  2528.     cbSize: UINT;
  2529.     uFlags: UINT;
  2530.     hwnd: HWND;
  2531.     uId: UINT;
  2532.     Rect: TRect;
  2533.     hInst: THandle;
  2534.     lpszText: PAnsiChar;
  2535.     lParam: LPARAM;
  2536.   end;
  2537.   {$EXTERNALSYM tagTOOLINFOW}
  2538.   tagTOOLINFOW = packed record
  2539.     cbSize: UINT;
  2540.     uFlags: UINT;
  2541.     hwnd: HWND;
  2542.     uId: UINT;
  2543.     Rect: TRect;
  2544.     hInst: THandle;
  2545.     lpszText: PWideChar;
  2546.     lParam: LPARAM;
  2547.   end;
  2548.   {$EXTERNALSYM tagTOOLINFO}
  2549.   tagTOOLINFO = tagTOOLINFOA;
  2550.   TToolInfoA = tagTOOLINFOA;
  2551.   TToolInfoW = tagTOOLINFOW;
  2552.   TToolInfo = TToolInfoA;
  2553.   {$EXTERNALSYM TOOLINFOA}
  2554.   TOOLINFOA = tagTOOLINFOA;
  2555.   {$EXTERNALSYM TOOLINFOW}
  2556.   TOOLINFOW = tagTOOLINFOW;
  2557.   {$EXTERNALSYM TOOLINFO}
  2558.   TOOLINFO = TOOLINFOA;
  2559.  
  2560. const
  2561.   {$EXTERNALSYM TTS_ALWAYSTIP}
  2562.   TTS_ALWAYSTIP           = $01;
  2563.   {$EXTERNALSYM TTS_NOPREFIX}
  2564.   TTS_NOPREFIX            = $02;
  2565.  
  2566.   {$EXTERNALSYM TTF_IDISHWND}
  2567.   TTF_IDISHWND            = $0001;
  2568.  
  2569.   // Use this to center around trackpoint in trackmode
  2570.   // -OR- to center around tool in normal mode.
  2571.   // Use TTF_ABSOLUTE to place the tip exactly at the track coords when
  2572.   // in tracking mode.  TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
  2573.   // to center the tip absolutely about the track point.
  2574.  
  2575.   {$EXTERNALSYM TTF_CENTERTIP}
  2576.   TTF_CENTERTIP           = $0002;
  2577.   {$EXTERNALSYM TTF_RTLREADING}
  2578.   TTF_RTLREADING          = $0004;
  2579.   {$EXTERNALSYM TTF_SUBCLASS}
  2580.   TTF_SUBCLASS            = $0010;
  2581.   {$EXTERNALSYM TTF_TRACK}
  2582.   TTF_TRACK               = $0020;
  2583.   {$EXTERNALSYM TTF_ABSOLUTE}
  2584.   TTF_ABSOLUTE            = $0080;
  2585.   {$EXTERNALSYM TTF_TRANSPARENT}
  2586.   TTF_TRANSPARENT         = $0100;
  2587.   {$EXTERNALSYM TTF_DI_SETITEM}
  2588.   TTF_DI_SETITEM          = $8000;       // valid only on the TTN_NEEDTEXT callback
  2589.  
  2590.   {$EXTERNALSYM TTDT_AUTOMATIC}
  2591.   TTDT_AUTOMATIC          = 0;
  2592.   {$EXTERNALSYM TTDT_RESHOW}
  2593.   TTDT_RESHOW             = 1;
  2594.   {$EXTERNALSYM TTDT_AUTOPOP}
  2595.   TTDT_AUTOPOP            = 2;
  2596.   {$EXTERNALSYM TTDT_INITIAL}
  2597.   TTDT_INITIAL            = 3;
  2598.  
  2599.   {$EXTERNALSYM TTM_ACTIVATE}
  2600.   TTM_ACTIVATE            = WM_USER + 1;
  2601.   {$EXTERNALSYM TTM_SETDELAYTIME}
  2602.   TTM_SETDELAYTIME        = WM_USER + 3;
  2603.  
  2604.   {$EXTERNALSYM TTM_ADDTOOLA}
  2605.   TTM_ADDTOOLA             = WM_USER + 4;
  2606.   {$EXTERNALSYM TTM_DELTOOLA}
  2607.   TTM_DELTOOLA             = WM_USER + 5;
  2608.   {$EXTERNALSYM TTM_NEWTOOLRECTA}
  2609.   TTM_NEWTOOLRECTA         = WM_USER + 6;
  2610.   {$EXTERNALSYM TTM_GETTOOLINFOA}
  2611.   TTM_GETTOOLINFOA         = WM_USER + 8;
  2612.   {$EXTERNALSYM TTM_SETTOOLINFOA}
  2613.   TTM_SETTOOLINFOA         = WM_USER + 9;
  2614.   {$EXTERNALSYM TTM_HITTESTA}
  2615.   TTM_HITTESTA             = WM_USER + 10;
  2616.   {$EXTERNALSYM TTM_GETTEXTA}
  2617.   TTM_GETTEXTA             = WM_USER + 11;
  2618.   {$EXTERNALSYM TTM_UPDATETIPTEXTA}
  2619.   TTM_UPDATETIPTEXTA       = WM_USER + 12;
  2620.   {$EXTERNALSYM TTM_ENUMTOOLSA}
  2621.   TTM_ENUMTOOLSA           = WM_USER + 14;
  2622.   {$EXTERNALSYM TTM_GETCURRENTTOOLA}
  2623.   TTM_GETCURRENTTOOLA      = WM_USER + 15;
  2624.  
  2625.   {$EXTERNALSYM TTM_ADDTOOLW}
  2626.   TTM_ADDTOOLW             = WM_USER + 50;
  2627.   {$EXTERNALSYM TTM_DELTOOLW}
  2628.   TTM_DELTOOLW             = WM_USER + 51;
  2629.   {$EXTERNALSYM TTM_NEWTOOLRECTW}
  2630.   TTM_NEWTOOLRECTW         = WM_USER + 52;
  2631.   {$EXTERNALSYM TTM_GETTOOLINFOW}
  2632.   TTM_GETTOOLINFOW         = WM_USER + 53;
  2633.   {$EXTERNALSYM TTM_SETTOOLINFOW}
  2634.   TTM_SETTOOLINFOW         = WM_USER + 54;
  2635.   {$EXTERNALSYM TTM_HITTESTW}
  2636.   TTM_HITTESTW             = WM_USER + 55;
  2637.   {$EXTERNALSYM TTM_GETTEXTW}
  2638.   TTM_GETTEXTW             = WM_USER + 56;
  2639.   {$EXTERNALSYM TTM_UPDATETIPTEXTW}
  2640.   TTM_UPDATETIPTEXTW       = WM_USER + 57;
  2641.   {$EXTERNALSYM TTM_ENUMTOOLSW}
  2642.   TTM_ENUMTOOLSW           = WM_USER + 58;
  2643.   {$EXTERNALSYM TTM_GETCURRENTTOOLW}
  2644.   TTM_GETCURRENTTOOLW      = WM_USER + 59;
  2645.   {$EXTERNALSYM TTM_WINDOWFROMPOINT}
  2646.   TTM_WINDOWFROMPOINT      = WM_USER + 16;
  2647.   {$EXTERNALSYM TTM_TRACKACTIVATE}
  2648.   TTM_TRACKACTIVATE        = WM_USER + 17;  // wParam = TRUE/FALSE start end  lparam = LPTOOLINFO
  2649.   {$EXTERNALSYM TTM_TRACKPOSITION}
  2650.   TTM_TRACKPOSITION        = WM_USER + 18;  // lParam = dwPos
  2651.   {$EXTERNALSYM TTM_SETTIPBKCOLOR}
  2652.   TTM_SETTIPBKCOLOR        = WM_USER + 19;
  2653.   {$EXTERNALSYM TTM_SETTIPTEXTCOLOR}
  2654.   TTM_SETTIPTEXTCOLOR      = WM_USER + 20;
  2655.   {$EXTERNALSYM TTM_GETDELAYTIME}
  2656.   TTM_GETDELAYTIME         = WM_USER + 21;
  2657.   {$EXTERNALSYM TTM_GETTIPBKCOLOR}
  2658.   TTM_GETTIPBKCOLOR        = WM_USER + 22;
  2659.   {$EXTERNALSYM TTM_GETTIPTEXTCOLOR}
  2660.   TTM_GETTIPTEXTCOLOR      = WM_USER + 23;
  2661.   {$EXTERNALSYM TTM_SETMAXTIPWIDTH}
  2662.   TTM_SETMAXTIPWIDTH       = WM_USER + 24;
  2663.   {$EXTERNALSYM TTM_GETMAXTIPWIDTH}
  2664.   TTM_GETMAXTIPWIDTH       = WM_USER + 25;
  2665.   {$EXTERNALSYM TTM_SETMARGIN}
  2666.   TTM_SETMARGIN            = WM_USER + 26;  // lParam = lprc
  2667.   {$EXTERNALSYM TTM_GETMARGIN}
  2668.   TTM_GETMARGIN            = WM_USER + 27;  // lParam = lprc
  2669.   {$EXTERNALSYM TTM_POP}
  2670.   TTM_POP                  = WM_USER + 28;
  2671.   {$EXTERNALSYM TTM_UPDATE}
  2672.   TTM_UPDATE               = WM_USER + 29;
  2673.  
  2674. {$IFDEF UNICODE}
  2675.   {$EXTERNALSYM TTM_ADDTOOL}
  2676.   TTM_ADDTOOL             = TTM_ADDTOOLW;
  2677.   {$EXTERNALSYM TTM_DELTOOL}
  2678.   TTM_DELTOOL             = TTM_DELTOOLW;
  2679.   {$EXTERNALSYM TTM_NEWTOOLRECT}
  2680.   TTM_NEWTOOLRECT         = TTM_NEWTOOLRECTW;
  2681.   {$EXTERNALSYM TTM_GETTOOLINFO}
  2682.   TTM_GETTOOLINFO         = TTM_GETTOOLINFOW;
  2683.   {$EXTERNALSYM TTM_SETTOOLINFO}
  2684.   TTM_SETTOOLINFO         = TTM_SETTOOLINFOW;
  2685.   {$EXTERNALSYM TTM_HITTEST}
  2686.   TTM_HITTEST             = TTM_HITTESTW;
  2687.   {$EXTERNALSYM TTM_GETTEXT}
  2688.   TTM_GETTEXT             = TTM_GETTEXTW;
  2689.   {$EXTERNALSYM TTM_UPDATETIPTEXT}
  2690.   TTM_UPDATETIPTEXT       = TTM_UPDATETIPTEXTW;
  2691.   {$EXTERNALSYM TTM_ENUMTOOLS}
  2692.   TTM_ENUMTOOLS           = TTM_ENUMTOOLSW;
  2693.   {$EXTERNALSYM TTM_GETCURRENTTOOL}
  2694.   TTM_GETCURRENTTOOL      = TTM_GETCURRENTTOOLW;
  2695. {$ELSE}
  2696.   {$EXTERNALSYM TTM_ADDTOOL}
  2697.   TTM_ADDTOOL             = TTM_ADDTOOLA;
  2698.   {$EXTERNALSYM TTM_DELTOOL}
  2699.   TTM_DELTOOL             = TTM_DELTOOLA;
  2700.   {$EXTERNALSYM TTM_NEWTOOLRECT}
  2701.   TTM_NEWTOOLRECT         = TTM_NEWTOOLRECTA;
  2702.   {$EXTERNALSYM TTM_GETTOOLINFO}
  2703.   TTM_GETTOOLINFO         = TTM_GETTOOLINFOA;
  2704.   {$EXTERNALSYM TTM_SETTOOLINFO}
  2705.   TTM_SETTOOLINFO         = TTM_SETTOOLINFOA;
  2706.   {$EXTERNALSYM TTM_HITTEST}
  2707.   TTM_HITTEST             = TTM_HITTESTA;
  2708.   {$EXTERNALSYM TTM_GETTEXT}
  2709.   TTM_GETTEXT             = TTM_GETTEXTA;
  2710.   {$EXTERNALSYM TTM_UPDATETIPTEXT}
  2711.   TTM_UPDATETIPTEXT       = TTM_UPDATETIPTEXTA;
  2712.   {$EXTERNALSYM TTM_ENUMTOOLS}
  2713.   TTM_ENUMTOOLS           = TTM_ENUMTOOLSA;
  2714.   {$EXTERNALSYM TTM_GETCURRENTTOOL}
  2715.   TTM_GETCURRENTTOOL      = TTM_GETCURRENTTOOLA;
  2716. {$ENDIF}
  2717.  
  2718.   {$EXTERNALSYM TTM_RELAYEVENT}
  2719.   TTM_RELAYEVENT          = WM_USER + 7;
  2720.   {$EXTERNALSYM TTM_GETTOOLCOUNT}
  2721.   TTM_GETTOOLCOUNT        = WM_USER +13;
  2722.  
  2723.  
  2724. type
  2725.   PTTHitTestInfoA = ^TTTHitTestInfoA;
  2726.   PTTHitTestInfoW = ^TTTHitTestInfoW;
  2727.   PTTHitTestInfo = PTTHitTestInfoA;
  2728.   {$EXTERNALSYM _TT_HITTESTINFOA}
  2729.   _TT_HITTESTINFOA = packed record
  2730.     hwnd: HWND;
  2731.     pt: TPoint;
  2732.     ti: TToolInfoA;
  2733.   end;
  2734.   {$EXTERNALSYM _TT_HITTESTINFOW}
  2735.   _TT_HITTESTINFOW = packed record
  2736.     hwnd: HWND;
  2737.     pt: TPoint;
  2738.     ti: TToolInfoW;
  2739.   end;
  2740.   {$EXTERNALSYM _TT_HITTESTINFO}
  2741.   _TT_HITTESTINFO = _TT_HITTESTINFOA;
  2742.   TTTHitTestInfoA = _TT_HITTESTINFOA;
  2743.   TTTHitTestInfoW = _TT_HITTESTINFOW;
  2744.   TTTHitTestInfo = TTTHitTestInfoA;
  2745.   {$EXTERNALSYM TTHITTESTINFOA}
  2746.   TTHITTESTINFOA = _TT_HITTESTINFOA;
  2747.   {$EXTERNALSYM TTHITTESTINFOW}
  2748.   TTHITTESTINFOW = _TT_HITTESTINFOW;
  2749.   {$EXTERNALSYM TTHITTESTINFO}
  2750.   TTHITTESTINFO = TTHITTESTINFOA;
  2751.  
  2752.  
  2753. const
  2754.   {$EXTERNALSYM TTN_NEEDTEXTA}
  2755.   TTN_NEEDTEXTA            = TTN_FIRST - 0;
  2756.   {$EXTERNALSYM TTN_NEEDTEXTW}
  2757.   TTN_NEEDTEXTW            = TTN_FIRST - 10;
  2758.  
  2759. {$IFDEF UNICODE}
  2760.   {$EXTERNALSYM TTN_NEEDTEXT}
  2761.   TTN_NEEDTEXT            = TTN_NEEDTEXTW;
  2762. {$ELSE}
  2763.   {$EXTERNALSYM TTN_NEEDTEXT}
  2764.   TTN_NEEDTEXT            = TTN_NEEDTEXTA;
  2765. {$ENDIF}
  2766.  
  2767.   {$EXTERNALSYM TTN_SHOW}
  2768.   TTN_SHOW                = TTN_FIRST - 1;
  2769.   {$EXTERNALSYM TTN_POP}
  2770.   TTN_POP                 = TTN_FIRST - 2;
  2771.  
  2772. type
  2773.   {$EXTERNALSYM tagNMTTDISPINFOA}
  2774.   tagNMTTDISPINFOA = packed record
  2775.     hdr: TNMHdr;
  2776.     lpszText: PAnsiChar;
  2777.     szText: array[0..79] of AnsiChar;
  2778.     hinst: HINST;
  2779.     uFlags: UINT;
  2780.     lParam: LPARAM;
  2781.   end;
  2782.   {$EXTERNALSYM tagNMTTDISPINFOW}
  2783.   tagNMTTDISPINFOW = packed record
  2784.     hdr: TNMHdr;
  2785.     lpszText: PWideChar;
  2786.     szText: array[0..79] of WideChar;
  2787.     hinst: HINST;
  2788.     uFlags: UINT;
  2789.     lParam: LPARAM;
  2790.   end;
  2791.   {$EXTERNALSYM tagNMTTDISPINFO}
  2792.   tagNMTTDISPINFO = tagNMTTDISPINFOA;
  2793.   PNMTTDispInfoA = ^TNMTTDispInfoA;
  2794.   PNMTTDispInfoW = ^TNMTTDispInfoW;
  2795.   PNMTTDispInfo = PNMTTDispInfoA;
  2796.   TNMTTDispInfoA = tagNMTTDISPINFOA;
  2797.   TNMTTDispInfoW = tagNMTTDISPINFOW;
  2798.   TNMTTDispInfo = TNMTTDispInfoA;
  2799.  
  2800.   {$EXTERNALSYM tagTOOLTIPTEXTA}
  2801.   tagTOOLTIPTEXTA = tagNMTTDISPINFOA;
  2802.   {$EXTERNALSYM tagTOOLTIPTEXTW}
  2803.   tagTOOLTIPTEXTW = tagNMTTDISPINFOW;
  2804.   {$EXTERNALSYM tagTOOLTIPTEXT}
  2805.   tagTOOLTIPTEXT = tagTOOLTIPTEXTA;
  2806.   {$EXTERNALSYM TOOLTIPTEXTA}
  2807.   TOOLTIPTEXTA = tagNMTTDISPINFOA;
  2808.   {$EXTERNALSYM TOOLTIPTEXTW}
  2809.   TOOLTIPTEXTW = tagNMTTDISPINFOW;
  2810.   {$EXTERNALSYM TOOLTIPTEXT}
  2811.   TOOLTIPTEXT = TOOLTIPTEXTA;
  2812.   TToolTipTextA = tagNMTTDISPINFOA;
  2813.   TToolTipTextW = tagNMTTDISPINFOW;
  2814.   TToolTipText = TToolTipTextA;
  2815.   PToolTipTextA = ^TToolTipTextA;
  2816.   PToolTipTextW = ^TToolTipTextW;
  2817.   PToolTipText = PToolTipTextA;
  2818. { ====== STATUS BAR CONTROL ================= }
  2819.  
  2820. const
  2821.   {$EXTERNALSYM SBARS_SIZEGRIP}
  2822.   SBARS_SIZEGRIP          = $0100;
  2823.  
  2824. {$EXTERNALSYM DrawStatusTextA}
  2825. procedure DrawStatusTextA(hDC: HDC; lprc: PRect; pzsText: PAnsiChar;
  2826.   uFlags: UINT); stdcall;
  2827. {$EXTERNALSYM DrawStatusTextW}
  2828. procedure DrawStatusTextW(hDC: HDC; lprc: PRect; pzsText: PWideChar;
  2829.   uFlags: UINT); stdcall;
  2830. {$EXTERNALSYM DrawStatusText}
  2831. procedure DrawStatusText(hDC: HDC; lprc: PRect; pzsText: PChar;
  2832.   uFlags: UINT); stdcall;
  2833. {$EXTERNALSYM CreateStatusWindowA}
  2834. function CreateStatusWindowA(Style: Longint; lpszText: PAnsiChar;
  2835.   hwndParent: HWND; wID: UINT): HWND; stdcall;
  2836. {$EXTERNALSYM CreateStatusWindowW}
  2837. function CreateStatusWindowW(Style: Longint; lpszText: PWideChar;
  2838.   hwndParent: HWND; wID: UINT): HWND; stdcall;
  2839. {$EXTERNALSYM CreateStatusWindow}
  2840. function CreateStatusWindow(Style: Longint; lpszText: PChar;
  2841.   hwndParent: HWND; wID: UINT): HWND; stdcall;
  2842.  
  2843. const
  2844.   {$EXTERNALSYM STATUSCLASSNAME}
  2845.   STATUSCLASSNAME = 'msctls_statusbar32';
  2846.  
  2847. const
  2848.   {$EXTERNALSYM SB_SETTEXTA}
  2849.   SB_SETTEXTA             = WM_USER+1;
  2850.   {$EXTERNALSYM SB_GETTEXTA}
  2851.   SB_GETTEXTA             = WM_USER+2;
  2852.   {$EXTERNALSYM SB_GETTEXTLENGTHA}
  2853.   SB_GETTEXTLENGTHA       = WM_USER+3;
  2854.   {$EXTERNALSYM SB_SETTIPTEXTA}
  2855.   SB_SETTIPTEXTA          = WM_USER+16;
  2856.   {$EXTERNALSYM SB_GETTIPTEXTA}
  2857.   SB_GETTIPTEXTA          = WM_USER+18;
  2858.  
  2859.   {$EXTERNALSYM SB_SETTEXTW}
  2860.   SB_SETTEXTW             = WM_USER+11;
  2861.   {$EXTERNALSYM SB_GETTEXTW}
  2862.   SB_GETTEXTW             = WM_USER+13;
  2863.   {$EXTERNALSYM SB_GETTEXTLENGTHW}
  2864.   SB_GETTEXTLENGTHW       = WM_USER+12;
  2865.   {$EXTERNALSYM SB_SETTIPTEXTW}
  2866.   SB_SETTIPTEXTW          = WM_USER+17;
  2867.   {$EXTERNALSYM SB_GETTIPTEXTW}
  2868.   SB_GETTIPTEXTW          = WM_USER+19;
  2869.  
  2870. {$IFDEF UNICODE}
  2871.   {$EXTERNALSYM SB_SETTEXT}
  2872.   SB_SETTEXT             = SB_SETTEXTW;
  2873.   {$EXTERNALSYM SB_GETTEXT}
  2874.   SB_GETTEXT             = SB_GETTEXTW;
  2875.   {$EXTERNALSYM SB_GETTEXTLENGTH}
  2876.   SB_GETTEXTLENGTH       = SB_GETTEXTLENGTHW;
  2877.   {$EXTERNALSYM SB_SETTIPTEXT}
  2878.   SB_SETTIPTEXT          = SB_SETTIPTEXTW;
  2879.   {$EXTERNALSYM SB_GETTIPTEXT}
  2880.   SB_GETTIPTEXT          = SB_GETTIPTEXTW;
  2881. {$ELSE}
  2882.   {$EXTERNALSYM SB_SETTEXT}
  2883.   SB_SETTEXT             = SB_SETTEXTA;
  2884.   {$EXTERNALSYM SB_GETTEXT}
  2885.   SB_GETTEXT             = SB_GETTEXTA;
  2886.   {$EXTERNALSYM SB_GETTEXTLENGTH}
  2887.   SB_GETTEXTLENGTH       = SB_GETTEXTLENGTHA;
  2888.   {$EXTERNALSYM SB_SETTIPTEXT}
  2889.   SB_SETTIPTEXT          = SB_SETTIPTEXTA;
  2890.   {$EXTERNALSYM SB_GETTIPTEXT}
  2891.   SB_GETTIPTEXT          = SB_GETTIPTEXTA;
  2892. {$ENDIF}
  2893.  
  2894.   {$EXTERNALSYM SB_SETPARTS}
  2895.   SB_SETPARTS             = WM_USER+4;
  2896.   {$EXTERNALSYM SB_GETPARTS}
  2897.   SB_GETPARTS             = WM_USER+6;
  2898.   {$EXTERNALSYM SB_GETBORDERS}
  2899.   SB_GETBORDERS           = WM_USER+7;
  2900.   {$EXTERNALSYM SB_SETMINHEIGHT}
  2901.   SB_SETMINHEIGHT         = WM_USER+8;
  2902.   {$EXTERNALSYM SB_SIMPLE}
  2903.   SB_SIMPLE               = WM_USER+9;
  2904.   {$EXTERNALSYM SB_GETRECT}
  2905.   SB_GETRECT              = WM_USER + 10;
  2906.   {$EXTERNALSYM SB_ISSIMPLE}
  2907.   SB_ISSIMPLE             = WM_USER+14;
  2908.   {$EXTERNALSYM SB_SETICON}
  2909.   SB_SETICON              = WM_USER+15;
  2910.   {$EXTERNALSYM SB_GETICON}
  2911.   SB_GETICON              = WM_USER+20;
  2912.   {$EXTERNALSYM SB_SETUNICODEFORMAT}
  2913.   SB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  2914.   {$EXTERNALSYM SB_GETUNICODEFORMAT}
  2915.   SB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  2916.  
  2917.   {$EXTERNALSYM SBT_OWNERDRAW}
  2918.   SBT_OWNERDRAW            = $1000;
  2919.   {$EXTERNALSYM SBT_NOBORDERS}
  2920.   SBT_NOBORDERS            = $0100;
  2921.   {$EXTERNALSYM SBT_POPOUT}
  2922.   SBT_POPOUT               = $0200;
  2923.   {$EXTERNALSYM SBT_RTLREADING}
  2924.   SBT_RTLREADING           = $0400;
  2925.   {$EXTERNALSYM SBT_TOOLTIPS}
  2926.   SBT_TOOLTIPS             = $0800;
  2927.  
  2928.   {$EXTERNALSYM SB_SETBKCOLOR}
  2929.   SB_SETBKCOLOR            = CCM_SETBKCOLOR;      // lParam = bkColor
  2930.  
  2931.   // status bar notifications
  2932.   {$EXTERNALSYM SBN_SIMPLEMODECHANGE}
  2933.   SBN_SIMPLEMODECHANGE     = SBN_FIRST - 0;
  2934.  
  2935. { ====== MENU HELP ========================== }
  2936.  
  2937. {$EXTERNALSYM MenuHelp}
  2938. procedure MenuHelp(Msg: UINT; wParam: WPARAM; lParam: LPARAM;
  2939.   hMainMenu: HMENU; hInst: THandle; hwndStatus: HWND; lpwIDs: PUINT); stdcall;
  2940. {$EXTERNALSYM ShowHideMenuCtl}
  2941. function ShowHideMenuCtl(hWnd: HWND; uFlags: UINT; lpInfo: PINT): Bool; stdcall;
  2942. {$EXTERNALSYM GetEffectiveClientRect}
  2943. procedure GetEffectiveClientRect(hWnd: HWND; lprc: PRect; lpInfo: PINT); stdcall;
  2944.  
  2945. const
  2946.   {$EXTERNALSYM MINSYSCOMMAND}
  2947.   MINSYSCOMMAND   = SC_SIZE;
  2948.  
  2949.  
  2950. { ====== TRACKBAR CONTROL =================== }
  2951.  
  2952.   {$EXTERNALSYM TRACKBAR_CLASS}
  2953.   TRACKBAR_CLASS = 'msctls_trackbar32';
  2954.  
  2955. const
  2956.   {$EXTERNALSYM TBS_AUTOTICKS}
  2957.   TBS_AUTOTICKS           = $0001;
  2958.   {$EXTERNALSYM TBS_VERT}
  2959.   TBS_VERT                = $0002;
  2960.   {$EXTERNALSYM TBS_HORZ}
  2961.   TBS_HORZ                = $0000;
  2962.   {$EXTERNALSYM TBS_TOP}
  2963.   TBS_TOP                 = $0004;
  2964.   {$EXTERNALSYM TBS_BOTTOM}
  2965.   TBS_BOTTOM              = $0000;
  2966.   {$EXTERNALSYM TBS_LEFT}
  2967.   TBS_LEFT                = $0004;
  2968.   {$EXTERNALSYM TBS_RIGHT}
  2969.   TBS_RIGHT               = $0000;
  2970.   {$EXTERNALSYM TBS_BOTH}
  2971.   TBS_BOTH                = $0008;
  2972.   {$EXTERNALSYM TBS_NOTICKS}
  2973.   TBS_NOTICKS             = $0010;
  2974.   {$EXTERNALSYM TBS_ENABLESELRANGE}
  2975.   TBS_ENABLESELRANGE      = $0020;
  2976.   {$EXTERNALSYM TBS_FIXEDLENGTH}
  2977.   TBS_FIXEDLENGTH         = $0040;
  2978.   {$EXTERNALSYM TBS_NOTHUMB}
  2979.   TBS_NOTHUMB             = $0080;
  2980.   {$EXTERNALSYM TBS_TOOLTIPS}
  2981.   TBS_TOOLTIPS            = $0100;
  2982.  
  2983.   {$EXTERNALSYM TBM_GETPOS}
  2984.   TBM_GETPOS              = WM_USER;
  2985.   {$EXTERNALSYM TBM_GETRANGEMIN}
  2986.   TBM_GETRANGEMIN         = WM_USER+1;
  2987.   {$EXTERNALSYM TBM_GETRANGEMAX}
  2988.   TBM_GETRANGEMAX         = WM_USER+2;
  2989.   {$EXTERNALSYM TBM_GETTIC}
  2990.   TBM_GETTIC              = WM_USER+3;
  2991.   {$EXTERNALSYM TBM_SETTIC}
  2992.   TBM_SETTIC              = WM_USER+4;
  2993.   {$EXTERNALSYM TBM_SETPOS}
  2994.   TBM_SETPOS              = WM_USER+5;
  2995.   {$EXTERNALSYM TBM_SETRANGE}
  2996.   TBM_SETRANGE            = WM_USER+6;
  2997.   {$EXTERNALSYM TBM_SETRANGEMIN}
  2998.   TBM_SETRANGEMIN         = WM_USER+7;
  2999.   {$EXTERNALSYM TBM_SETRANGEMAX}
  3000.   TBM_SETRANGEMAX         = WM_USER+8;
  3001.   {$EXTERNALSYM TBM_CLEARTICS}
  3002.   TBM_CLEARTICS           = WM_USER+9;
  3003.   {$EXTERNALSYM TBM_SETSEL}
  3004.   TBM_SETSEL              = WM_USER+10;
  3005.   {$EXTERNALSYM TBM_SETSELSTART}
  3006.   TBM_SETSELSTART         = WM_USER+11;
  3007.   {$EXTERNALSYM TBM_SETSELEND}
  3008.   TBM_SETSELEND           = WM_USER+12;
  3009.   {$EXTERNALSYM TBM_GETPTICS}
  3010.   TBM_GETPTICS            = WM_USER+14;
  3011.   {$EXTERNALSYM TBM_GETTICPOS}
  3012.   TBM_GETTICPOS           = WM_USER+15;
  3013.   {$EXTERNALSYM TBM_GETNUMTICS}
  3014.   TBM_GETNUMTICS          = WM_USER+16;
  3015.   {$EXTERNALSYM TBM_GETSELSTART}
  3016.   TBM_GETSELSTART         = WM_USER+17;
  3017.   {$EXTERNALSYM TBM_GETSELEND}
  3018.   TBM_GETSELEND           = WM_USER+18;
  3019.   {$EXTERNALSYM TBM_CLEARSEL}
  3020.   TBM_CLEARSEL            = WM_USER+19;
  3021.   {$EXTERNALSYM TBM_SETTICFREQ}
  3022.   TBM_SETTICFREQ          = WM_USER+20;
  3023.   {$EXTERNALSYM TBM_SETPAGESIZE}
  3024.   TBM_SETPAGESIZE         = WM_USER+21;
  3025.   {$EXTERNALSYM TBM_GETPAGESIZE}
  3026.   TBM_GETPAGESIZE         = WM_USER+22;
  3027.   {$EXTERNALSYM TBM_SETLINESIZE}
  3028.   TBM_SETLINESIZE         = WM_USER+23;
  3029.   {$EXTERNALSYM TBM_GETLINESIZE}
  3030.   TBM_GETLINESIZE         = WM_USER+24;
  3031.   {$EXTERNALSYM TBM_GETTHUMBRECT}
  3032.   TBM_GETTHUMBRECT        = WM_USER+25;
  3033.   {$EXTERNALSYM TBM_GETCHANNELRECT}
  3034.   TBM_GETCHANNELRECT      = WM_USER+26;
  3035.   {$EXTERNALSYM TBM_SETTHUMBLENGTH}
  3036.   TBM_SETTHUMBLENGTH      = WM_USER+27;
  3037.   {$EXTERNALSYM TBM_GETTHUMBLENGTH}
  3038.   TBM_GETTHUMBLENGTH      = WM_USER+28;
  3039.   {$EXTERNALSYM TBM_SETTOOLTIPS}
  3040.   TBM_SETTOOLTIPS         = WM_USER+29;
  3041.   {$EXTERNALSYM TBM_GETTOOLTIPS}
  3042.   TBM_GETTOOLTIPS         = WM_USER+30;
  3043.   {$EXTERNALSYM TBM_SETTIPSIDE}
  3044.   TBM_SETTIPSIDE          = WM_USER+31;
  3045.  
  3046.   // TrackBar Tip Side flags
  3047.   {$EXTERNALSYM TBTS_TOP}
  3048.   TBTS_TOP                = 0;
  3049.   {$EXTERNALSYM TBTS_LEFT}
  3050.   TBTS_LEFT               = 1;
  3051.   {$EXTERNALSYM TBTS_BOTTOM}
  3052.   TBTS_BOTTOM             = 2;
  3053.   {$EXTERNALSYM TBTS_RIGHT}
  3054.   TBTS_RIGHT              = 3;
  3055.  
  3056.   {$EXTERNALSYM TBM_SETBUDDY}
  3057.   TBM_SETBUDDY            = WM_USER+32; // wparam = BOOL fLeft; (or right)
  3058.   {$EXTERNALSYM TBM_GETBUDDY}
  3059.   TBM_GETBUDDY            = WM_USER+33; // wparam = BOOL fLeft; (or right)
  3060.   {$EXTERNALSYM TBM_SETUNICODEFORMAT}
  3061.   TBM_SETUNICODEFORMAT    = CCM_SETUNICODEFORMAT;
  3062.   {$EXTERNALSYM TBM_GETUNICODEFORMAT}
  3063.   TBM_GETUNICODEFORMAT    = CCM_GETUNICODEFORMAT;
  3064.  
  3065.   {$EXTERNALSYM TB_LINEUP}
  3066.   TB_LINEUP               = 0;
  3067.   {$EXTERNALSYM TB_LINEDOWN}
  3068.   TB_LINEDOWN             = 1;
  3069.   {$EXTERNALSYM TB_PAGEUP}
  3070.   TB_PAGEUP               = 2;
  3071.   {$EXTERNALSYM TB_PAGEDOWN}
  3072.   TB_PAGEDOWN             = 3;
  3073.   {$EXTERNALSYM TB_THUMBPOSITION}
  3074.   TB_THUMBPOSITION        = 4;
  3075.   {$EXTERNALSYM TB_THUMBTRACK}
  3076.   TB_THUMBTRACK           = 5;
  3077.   {$EXTERNALSYM TB_TOP}
  3078.   TB_TOP                  = 6;
  3079.   {$EXTERNALSYM TB_BOTTOM}
  3080.   TB_BOTTOM               = 7;
  3081.   {$EXTERNALSYM TB_ENDTRACK}
  3082.   TB_ENDTRACK             = 8;
  3083.  
  3084.   // custom draw item specs
  3085.   {$EXTERNALSYM TBCD_TICS}
  3086.   TBCD_TICS    = $0001;
  3087.   {$EXTERNALSYM TBCD_THUMB}
  3088.   TBCD_THUMB   = $0002;
  3089.   {$EXTERNALSYM TBCD_CHANNEL}
  3090.   TBCD_CHANNEL = $0003;
  3091.  
  3092. { ====== DRAG LIST CONTROL ================== }
  3093.  
  3094. type
  3095.   PDragListInfo = ^TDragListInfo;
  3096.   {$EXTERNALSYM tagDRAGLISTINFO}
  3097.   tagDRAGLISTINFO = packed record
  3098.     uNotification: UINT;
  3099.     hWnd: HWND;
  3100.     ptCursor: TPoint;
  3101.   end;
  3102.   TDragListInfo = tagDRAGLISTINFO;
  3103.   {$EXTERNALSYM DRAGLISTINFO}
  3104.   DRAGLISTINFO = tagDRAGLISTINFO;
  3105.  
  3106. const
  3107.   {$EXTERNALSYM DL_BEGINDRAG}
  3108.   DL_BEGINDRAG            = WM_USER+133;
  3109.   {$EXTERNALSYM DL_DRAGGING}
  3110.   DL_DRAGGING             = WM_USER+134;
  3111.   {$EXTERNALSYM DL_DROPPED}
  3112.   DL_DROPPED              = WM_USER+135;
  3113.   {$EXTERNALSYM DL_CANCELDRAG}
  3114.   DL_CANCELDRAG           = WM_USER+136;
  3115.  
  3116.   {$EXTERNALSYM DL_CURSORSET}
  3117.   DL_CURSORSET            = 0;
  3118.   {$EXTERNALSYM DL_STOPCURSOR}
  3119.   DL_STOPCURSOR           = 1;
  3120.   {$EXTERNALSYM DL_COPYCURSOR}
  3121.   DL_COPYCURSOR           = 2;
  3122.   {$EXTERNALSYM DL_MOVECURSOR}
  3123.   DL_MOVECURSOR           = 3;
  3124.  
  3125. const
  3126.   {$EXTERNALSYM DRAGLISTMSGSTRING}
  3127.   DRAGLISTMSGSTRING = 'commctrl_DragListMsg';
  3128.  
  3129. {$EXTERNALSYM MakeDragList}
  3130. procedure MakeDragList(hLB: HWND); stdcall;
  3131. {$EXTERNALSYM DrawInsert}
  3132. procedure DrawInsert(hwndParent: HWND; hLB: HWND; nItem: Integer); stdcall;
  3133. {$EXTERNALSYM LBItemFromPt}
  3134. function LBItemFromPt(hLB: HWND; pt: TPoint; bAutoScroll: Bool): Integer; stdcall;
  3135.  
  3136.  
  3137. { ====== UPDOWN CONTROL ========================== }
  3138.  
  3139. const
  3140.   {$EXTERNALSYM UPDOWN_CLASS}
  3141.   UPDOWN_CLASS = 'msctls_updown32';
  3142.  
  3143. type
  3144.   PUDAccel = ^TUDAccel;
  3145.   {$EXTERNALSYM _UDACCEL}
  3146.   _UDACCEL = packed record
  3147.     nSec: UINT;
  3148.     nInc: UINT;
  3149.   end;
  3150.   TUDAccel = _UDACCEL;
  3151.   {$EXTERNALSYM UDACCEL}
  3152.   UDACCEL = _UDACCEL;
  3153.  
  3154. const
  3155.   {$EXTERNALSYM UD_MAXVAL}
  3156.   UD_MAXVAL               = $7fff;
  3157.   {$EXTERNALSYM UD_MINVAL}
  3158.   UD_MINVAL               = -UD_MAXVAL;
  3159.  
  3160.   {$EXTERNALSYM UDS_WRAP}
  3161.   UDS_WRAP                = $0001;
  3162.   {$EXTERNALSYM UDS_SETBUDDYINT}
  3163.   UDS_SETBUDDYINT         = $0002;
  3164.   {$EXTERNALSYM UDS_ALIGNRIGHT}
  3165.   UDS_ALIGNRIGHT          = $0004;
  3166.   {$EXTERNALSYM UDS_ALIGNLEFT}
  3167.   UDS_ALIGNLEFT           = $0008;
  3168.   {$EXTERNALSYM UDS_AUTOBUDDY}
  3169.   UDS_AUTOBUDDY           = $0010;
  3170.   {$EXTERNALSYM UDS_ARROWKEYS}
  3171.   UDS_ARROWKEYS           = $0020;
  3172.   {$EXTERNALSYM UDS_HORZ}
  3173.   UDS_HORZ                = $0040;
  3174.   {$EXTERNALSYM UDS_NOTHOUSANDS}
  3175.   UDS_NOTHOUSANDS         = $0080;
  3176.   {$EXTERNALSYM UDS_HOTTRACK}
  3177.   UDS_HOTTRACK            = $0100;
  3178.  
  3179.  
  3180.   {$EXTERNALSYM UDM_SETRANGE}
  3181.   UDM_SETRANGE            = WM_USER+101;
  3182.   {$EXTERNALSYM UDM_GETRANGE}
  3183.   UDM_GETRANGE            = WM_USER+102;
  3184.   {$EXTERNALSYM UDM_SETPOS}
  3185.   UDM_SETPOS              = WM_USER+103;
  3186.   {$EXTERNALSYM UDM_GETPOS}
  3187.   UDM_GETPOS              = WM_USER+104;
  3188.   {$EXTERNALSYM UDM_SETBUDDY}
  3189.   UDM_SETBUDDY            = WM_USER+105;
  3190.   {$EXTERNALSYM UDM_GETBUDDY}
  3191.   UDM_GETBUDDY            = WM_USER+106;
  3192.   {$EXTERNALSYM UDM_SETACCEL}
  3193.   UDM_SETACCEL            = WM_USER+107;
  3194.   {$EXTERNALSYM UDM_GETACCEL}
  3195.   UDM_GETACCEL            = WM_USER+108;
  3196.   {$EXTERNALSYM UDM_SETBASE}
  3197.   UDM_SETBASE             = WM_USER+109;
  3198.   {$EXTERNALSYM UDM_GETBASE}
  3199.   UDM_GETBASE             = WM_USER+110;
  3200.   {$EXTERNALSYM UDM_SETRANGE32}
  3201.   UDM_SETRANGE32          = WM_USER+111;
  3202.   {$EXTERNALSYM UDM_GETRANGE32}
  3203.   UDM_GETRANGE32          = WM_USER+112; // wParam & lParam are LPINT
  3204.   {$EXTERNALSYM UDM_SETUNICODEFORMAT}
  3205.   UDM_SETUNICODEFORMAT    = CCM_SETUNICODEFORMAT;
  3206.   {$EXTERNALSYM UDM_GETUNICODEFORMAT}
  3207.   UDM_GETUNICODEFORMAT    = CCM_GETUNICODEFORMAT;
  3208.  
  3209. {$EXTERNALSYM CreateUpDownControl}
  3210. function CreateUpDownControl(dwStyle: Longint; X, Y, CX, CY: Integer;
  3211.   hParent: HWND;  nID: Integer; hInst: THandle; hBuddy: HWND;
  3212.   nUpper, nLower, nPos: Integer): HWND; stdcall;
  3213.  
  3214. type
  3215.   PNMUpDown = ^TNMUpDown;
  3216.   {$EXTERNALSYM _NM_UPDOWN}
  3217.   _NM_UPDOWN = packed record
  3218.     hdr: TNMHDR;
  3219.     iPos: Integer;
  3220.     iDelta: Integer;
  3221.   end;
  3222.   TNMUpDown = _NM_UPDOWN;
  3223.   {$EXTERNALSYM NM_UPDOWN}
  3224.   NM_UPDOWN = _NM_UPDOWN;
  3225.  
  3226. const
  3227.   {$EXTERNALSYM UDN_DELTAPOS}
  3228.   UDN_DELTAPOS = UDN_FIRST - 1;
  3229.  
  3230.  
  3231. { ====== PROGRESS CONTROL ========================= }
  3232.  
  3233. const
  3234.   {$EXTERNALSYM PROGRESS_CLASS}
  3235.   PROGRESS_CLASS = 'msctls_progress32';
  3236.  
  3237. type
  3238.   {$EXTERNALSYM PBRANGE}
  3239.   PBRANGE = record
  3240.     iLow: Integer;
  3241.     iHigh: Integer;
  3242.   end;
  3243.   PPBRange = ^TPBRange;
  3244.   TPBRange = PBRANGE;
  3245.  
  3246. const
  3247.   {$EXTERNALSYM PBS_SMOOTH}
  3248.   PBS_SMOOTH              = 01;
  3249.   {$EXTERNALSYM PBS_VERTICAL}
  3250.   PBS_VERTICAL            = 04;
  3251.   
  3252.   {$EXTERNALSYM PBM_SETRANGE}
  3253.   PBM_SETRANGE            = WM_USER+1;
  3254.   {$EXTERNALSYM PBM_SETPOS}
  3255.   PBM_SETPOS              = WM_USER+2;
  3256.   {$EXTERNALSYM PBM_DELTAPOS}
  3257.   PBM_DELTAPOS            = WM_USER+3;
  3258.   {$EXTERNALSYM PBM_SETSTEP}
  3259.   PBM_SETSTEP             = WM_USER+4;
  3260.   {$EXTERNALSYM PBM_STEPIT}
  3261.   PBM_STEPIT              = WM_USER+5;
  3262.   {$EXTERNALSYM PBM_SETRANGE32}
  3263.   PBM_SETRANGE32          = WM_USER+6;   // lParam = high, wParam = low
  3264.   {$EXTERNALSYM PBM_GETRANGE}
  3265.   PBM_GETRANGE            = WM_USER+7;   // lParam = PPBRange or Nil
  3266.                      // wParam = False: Result = high
  3267.                      // wParam = True: Result = low
  3268.   {$EXTERNALSYM PBM_GETPOS}
  3269.   PBM_GETPOS              = WM_USER+8;
  3270.   {$EXTERNALSYM PBM_SETBARCOLOR}
  3271.   PBM_SETBARCOLOR         = WM_USER+9;        // lParam = bar color
  3272.   {$EXTERNALSYM PBM_SETBKCOLOR}
  3273.   PBM_SETBKCOLOR          = CCM_SETBKCOLOR;  // lParam = bkColor
  3274.  
  3275.  
  3276. {  ====== HOTKEY CONTROL ========================== }
  3277.  
  3278. const
  3279.   {$EXTERNALSYM HOTKEYF_SHIFT}
  3280.   HOTKEYF_SHIFT           = $01;
  3281.   {$EXTERNALSYM HOTKEYF_CONTROL}
  3282.   HOTKEYF_CONTROL         = $02;
  3283.   {$EXTERNALSYM HOTKEYF_ALT}
  3284.   HOTKEYF_ALT             = $04;
  3285.   {$EXTERNALSYM HOTKEYF_EXT}
  3286.   HOTKEYF_EXT             = $08;
  3287.  
  3288.   {$EXTERNALSYM HKCOMB_NONE}
  3289.   HKCOMB_NONE             = $0001;
  3290.   {$EXTERNALSYM HKCOMB_S}
  3291.   HKCOMB_S                = $0002;
  3292.   {$EXTERNALSYM HKCOMB_C}
  3293.   HKCOMB_C                = $0004;
  3294.   {$EXTERNALSYM HKCOMB_A}
  3295.   HKCOMB_A                = $0008;
  3296.   {$EXTERNALSYM HKCOMB_SC}
  3297.   HKCOMB_SC               = $0010;
  3298.   {$EXTERNALSYM HKCOMB_SA}
  3299.   HKCOMB_SA               = $0020;
  3300.   {$EXTERNALSYM HKCOMB_CA}
  3301.   HKCOMB_CA               = $0040;
  3302.   {$EXTERNALSYM HKCOMB_SCA}
  3303.   HKCOMB_SCA              = $0080;
  3304.  
  3305.  
  3306.   {$EXTERNALSYM HKM_SETHOTKEY}
  3307.   HKM_SETHOTKEY           = WM_USER+1;
  3308.   {$EXTERNALSYM HKM_GETHOTKEY}
  3309.   HKM_GETHOTKEY           = WM_USER+2;
  3310.   {$EXTERNALSYM HKM_SETRULES}
  3311.   HKM_SETRULES            = WM_USER+3;
  3312.  
  3313. const
  3314.   HOTKEYCLASS = 'msctls_hotkey32';
  3315.  
  3316.  
  3317. { ====== COMMON CONTROL STYLES ================ }
  3318.  
  3319. const
  3320.   {$EXTERNALSYM CCS_TOP}
  3321.   CCS_TOP                 = $00000001;
  3322.   {$EXTERNALSYM CCS_NOMOVEY}
  3323.   CCS_NOMOVEY             = $00000002;
  3324.   {$EXTERNALSYM CCS_BOTTOM}
  3325.   CCS_BOTTOM              = $00000003;
  3326.   {$EXTERNALSYM CCS_NORESIZE}
  3327.   CCS_NORESIZE            = $00000004;
  3328.   {$EXTERNALSYM CCS_NOPARENTALIGN}
  3329.   CCS_NOPARENTALIGN       = $00000008;
  3330.   {$EXTERNALSYM CCS_ADJUSTABLE}
  3331.   CCS_ADJUSTABLE          = $00000020;
  3332.   {$EXTERNALSYM CCS_NODIVIDER}
  3333.   CCS_NODIVIDER           = $00000040;
  3334.   {$EXTERNALSYM CCS_VERT}
  3335.   CCS_VERT                = $00000080;
  3336.   {$EXTERNALSYM CCS_LEFT}
  3337.   CCS_LEFT                = (CCS_VERT or CCS_TOP);
  3338.   {$EXTERNALSYM CCS_RIGHT}
  3339.   CCS_RIGHT               = (CCS_VERT or CCS_BOTTOM);
  3340.   {$EXTERNALSYM CCS_NOMOVEX}
  3341.   CCS_NOMOVEX             = (CCS_VERT or CCS_NOMOVEY);
  3342.  
  3343.  
  3344. { ====== LISTVIEW CONTROL ====================== }
  3345.  
  3346. const
  3347.   {$EXTERNALSYM WC_LISTVIEW}
  3348.   WC_LISTVIEW = 'SysListView32';
  3349.  
  3350. const
  3351.  
  3352.   { List View Styles }
  3353.   {$EXTERNALSYM LVS_ICON}
  3354.   LVS_ICON                = $0000;
  3355.   {$EXTERNALSYM LVS_REPORT}
  3356.   LVS_REPORT              = $0001;
  3357.   {$EXTERNALSYM LVS_SMALLICON}
  3358.   LVS_SMALLICON           = $0002;
  3359.   {$EXTERNALSYM LVS_LIST}
  3360.   LVS_LIST                = $0003;
  3361.   {$EXTERNALSYM LVS_TYPEMASK}
  3362.   LVS_TYPEMASK            = $0003;
  3363.   {$EXTERNALSYM LVS_SINGLESEL}
  3364.   LVS_SINGLESEL           = $0004;
  3365.   {$EXTERNALSYM LVS_SHOWSELALWAYS}
  3366.   LVS_SHOWSELALWAYS       = $0008;
  3367.   {$EXTERNALSYM LVS_SORTASCENDING}
  3368.   LVS_SORTASCENDING       = $0010;
  3369.   {$EXTERNALSYM LVS_SORTDESCENDING}
  3370.   LVS_SORTDESCENDING      = $0020;
  3371.   {$EXTERNALSYM LVS_SHAREIMAGELISTS}
  3372.   LVS_SHAREIMAGELISTS     = $0040;
  3373.   {$EXTERNALSYM LVS_NOLABELWRAP}
  3374.   LVS_NOLABELWRAP         = $0080;
  3375.   {$EXTERNALSYM LVS_AUTOARRANGE}
  3376.   LVS_AUTOARRANGE         = $0100;
  3377.   {$EXTERNALSYM LVS_EDITLABELS}
  3378.   LVS_EDITLABELS          = $0200;
  3379.   {$EXTERNALSYM LVS_OWNERDATA}
  3380.   LVS_OWNERDATA           = $1000; 
  3381.   {$EXTERNALSYM LVS_NOSCROLL}
  3382.   LVS_NOSCROLL            = $2000;
  3383.  
  3384.   {$EXTERNALSYM LVS_TYPESTYLEMASK}
  3385.   LVS_TYPESTYLEMASK       = $FC00;
  3386.  
  3387.   {$EXTERNALSYM LVS_ALIGNTOP}
  3388.   LVS_ALIGNTOP            = $0000;
  3389.   {$EXTERNALSYM LVS_ALIGNLEFT}
  3390.   LVS_ALIGNLEFT           = $0800;
  3391.   {$EXTERNALSYM LVS_ALIGNMASK}
  3392.   LVS_ALIGNMASK           = $0c00;
  3393.  
  3394.   {$EXTERNALSYM LVS_OWNERDRAWFIXED}
  3395.   LVS_OWNERDRAWFIXED      = $0400;
  3396.   {$EXTERNALSYM LVS_NOCOLUMNHEADER}
  3397.   LVS_NOCOLUMNHEADER      = $4000;
  3398.   {$EXTERNALSYM LVS_NOSORTHEADER}
  3399.   LVS_NOSORTHEADER        = $8000;
  3400.  
  3401.   { List View Extended Styles }
  3402.   {$EXTERNALSYM LVS_EX_GRIDLINES}
  3403.   LVS_EX_GRIDLINES        = $00000001;
  3404.   {$EXTERNALSYM LVS_EX_SUBITEMIMAGES}
  3405.   LVS_EX_SUBITEMIMAGES    = $00000002;
  3406.   {$EXTERNALSYM LVS_EX_CHECKBOXES}
  3407.   LVS_EX_CHECKBOXES       = $00000004;
  3408.   {$EXTERNALSYM LVS_EX_TRACKSELECT}
  3409.   LVS_EX_TRACKSELECT      = $00000008;
  3410.   {$EXTERNALSYM LVS_EX_HEADERDRAGDROP}
  3411.   LVS_EX_HEADERDRAGDROP   = $00000010;
  3412.   {$EXTERNALSYM LVS_EX_FULLROWSELECT}
  3413.   LVS_EX_FULLROWSELECT    = $00000020; // applies to report mode only
  3414.   {$EXTERNALSYM LVS_EX_ONECLICKACTIVATE}
  3415.   LVS_EX_ONECLICKACTIVATE = $00000040;
  3416.   {$EXTERNALSYM LVS_EX_TWOCLICKACTIVATE}
  3417.   LVS_EX_TWOCLICKACTIVATE = $00000080;
  3418.   {$EXTERNALSYM LVS_EX_FLATSB}
  3419.   LVS_EX_FLATSB           = $00000100;
  3420.   {$EXTERNALSYM LVS_EX_REGIONAL}
  3421.   LVS_EX_REGIONAL         = $00000200;
  3422.   {$EXTERNALSYM LVS_EX_INFOTIP}
  3423.   LVS_EX_INFOTIP          = $00000400; // listview does InfoTips for you
  3424.   {$EXTERNALSYM LVS_EX_UNDERLINEHOT}
  3425.   LVS_EX_UNDERLINEHOT     = $00000800;
  3426.   {$EXTERNALSYM LVS_EX_UNDERLINECOLD}
  3427.   LVS_EX_UNDERLINECOLD    = $00001000;
  3428.   {$EXTERNALSYM LVS_EX_MULTIWORKAREAS}
  3429.   LVS_EX_MULTIWORKAREAS   = $00002000;
  3430.  
  3431. const
  3432.   {$EXTERNALSYM LVM_SETUNICODEFORMAT}
  3433.   LVM_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  3434.  
  3435. {$EXTERNALSYM ListView_SetUnicodeFormat}
  3436. function ListView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  3437.  
  3438. const
  3439.   {$EXTERNALSYM LVM_GETUNICODEFORMAT}
  3440.   LVM_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  3441.  
  3442. {$EXTERNALSYM ListView_GetUnicodeFormat}
  3443. function ListView_GetUnicodeFormat(hwnd: HWND): BOOL;
  3444.  
  3445. const
  3446.   {$EXTERNALSYM LVM_GETBKCOLOR}
  3447.   LVM_GETBKCOLOR          = LVM_FIRST + 0;
  3448.  
  3449. {$EXTERNALSYM ListView_GetBkColor}
  3450. function ListView_GetBkColor(hWnd: HWND): TColorRef;
  3451.  
  3452. const
  3453.   {$EXTERNALSYM LVM_SETBKCOLOR}
  3454.   LVM_SETBKCOLOR          = LVM_FIRST + 1;
  3455.  
  3456. {$EXTERNALSYM ListView_SetBkColor}
  3457. function ListView_SetBkColor(hWnd: HWND; clrBk: TColorRef): Bool;
  3458.  
  3459. const
  3460.   {$EXTERNALSYM LVM_GETIMAGELIST}
  3461.   LVM_GETIMAGELIST        = LVM_FIRST + 2;
  3462.  
  3463. {$EXTERNALSYM ListView_GetImageList}
  3464. function ListView_GetImageList(hWnd: HWND; iImageList: Integer): HIMAGELIST;
  3465.  
  3466. const
  3467.   {$EXTERNALSYM LVSIL_NORMAL}
  3468.   LVSIL_NORMAL            = 0;
  3469.   {$EXTERNALSYM LVSIL_SMALL}
  3470.   LVSIL_SMALL             = 1;
  3471.   {$EXTERNALSYM LVSIL_STATE}
  3472.   LVSIL_STATE             = 2;
  3473.  
  3474. const
  3475.   {$EXTERNALSYM LVM_SETIMAGELIST}
  3476.   LVM_SETIMAGELIST        = LVM_FIRST + 3;
  3477.  
  3478. {$EXTERNALSYM ListView_SetImageList}
  3479. function ListView_SetImageList(hWnd: HWND; himl: HIMAGELIST;
  3480.   iImageList: Integer): HIMAGELIST;
  3481.  
  3482. const
  3483.   {$EXTERNALSYM LVM_GETITEMCOUNT}
  3484.   LVM_GETITEMCOUNT        = LVM_FIRST + 4;
  3485.  
  3486. {$EXTERNALSYM ListView_GetItemCount}
  3487. function ListView_GetItemCount(hWnd: HWND): Integer;
  3488.  
  3489. const
  3490.   {$EXTERNALSYM LVIF_TEXT}
  3491.   LVIF_TEXT               = $0001;
  3492.   {$EXTERNALSYM LVIF_IMAGE}
  3493.   LVIF_IMAGE              = $0002;
  3494.   {$EXTERNALSYM LVIF_PARAM}
  3495.   LVIF_PARAM              = $0004;
  3496.   {$EXTERNALSYM LVIF_STATE}
  3497.   LVIF_STATE              = $0008;
  3498.   {$EXTERNALSYM LVIF_INDENT}
  3499.   LVIF_INDENT             = $0010;
  3500.   {$EXTERNALSYM LVIF_NORECOMPUTE}
  3501.   LVIF_NORECOMPUTE        = $0800;
  3502.  
  3503.   {$EXTERNALSYM LVIS_FOCUSED}
  3504.   LVIS_FOCUSED            = $0001;
  3505.   {$EXTERNALSYM LVIS_SELECTED}
  3506.   LVIS_SELECTED           = $0002;
  3507.   {$EXTERNALSYM LVIS_CUT}
  3508.   LVIS_CUT                = $0004;
  3509.   {$EXTERNALSYM LVIS_DROPHILITED}
  3510.   LVIS_DROPHILITED        = $0008;
  3511.   {$EXTERNALSYM LVIS_ACTIVATING}
  3512.   LVIS_ACTIVATING         = $0020;
  3513.  
  3514.   {$EXTERNALSYM LVIS_OVERLAYMASK}
  3515.   LVIS_OVERLAYMASK        = $0F00;
  3516.   {$EXTERNALSYM LVIS_STATEIMAGEMASK}
  3517.   LVIS_STATEIMAGEMASK     = $F000;
  3518.  
  3519. {$EXTERNALSYM IndexToStateImageMask}
  3520. function IndexToStateImageMask(I: Longint): Longint;
  3521.  
  3522. const
  3523.   {$EXTERNALSYM I_INDENTCALLBACK}
  3524.   I_INDENTCALLBACK        = -1;
  3525.  
  3526. type
  3527.   PLVItemA = ^TLVItemA;
  3528.   PLVItemW = ^TLVItemW;
  3529.   PLVItem = PLVItemA;
  3530.   {$EXTERNALSYM tagLVITEMA}
  3531.   tagLVITEMA = packed record
  3532.     mask: UINT;
  3533.     iItem: Integer;
  3534.     iSubItem: Integer;
  3535.     state: UINT;
  3536.     stateMask: UINT;
  3537.     pszText: PAnsiChar;
  3538.     cchTextMax: Integer;
  3539.     iImage: Integer;
  3540.     lParam: LPARAM;
  3541.     iIndent: Integer;
  3542.   end;
  3543.   {$EXTERNALSYM tagLVITEMW}
  3544.   tagLVITEMW = packed record
  3545.     mask: UINT;
  3546.     iItem: Integer;
  3547.     iSubItem: Integer;
  3548.     state: UINT;
  3549.     stateMask: UINT;
  3550.     pszText: PWideChar;
  3551.     cchTextMax: Integer;
  3552.     iImage: Integer;
  3553.     lParam: LPARAM;
  3554.     iIndent: Integer;
  3555.   end;
  3556.   {$EXTERNALSYM tagLVITEM}
  3557.   tagLVITEM = tagLVITEMA;
  3558.   {$EXTERNALSYM _LV_ITEMA}
  3559.   _LV_ITEMA = tagLVITEMA;
  3560.   {$EXTERNALSYM _LV_ITEMW}
  3561.   _LV_ITEMW = tagLVITEMW;
  3562.   {$EXTERNALSYM _LV_ITEM}
  3563.   _LV_ITEM = _LV_ITEMA;
  3564.   TLVItemA = tagLVITEMA;
  3565.   TLVItemW = tagLVITEMW;
  3566.   TLVItem = TLVItemA;
  3567.   {$EXTERNALSYM LV_ITEMA}
  3568.   LV_ITEMA = tagLVITEMA;
  3569.   {$EXTERNALSYM LV_ITEMW}
  3570.   LV_ITEMW = tagLVITEMW;
  3571.   {$EXTERNALSYM LV_ITEM}
  3572.   LV_ITEM = LV_ITEMA;
  3573.  
  3574. const
  3575.   {$EXTERNALSYM LPSTR_TEXTCALLBACKA}
  3576.   LPSTR_TEXTCALLBACKA = LPSTR(-1);
  3577.   {$EXTERNALSYM LPSTR_TEXTCALLBACKW}
  3578.   LPSTR_TEXTCALLBACKW = LPWSTR(-1);
  3579.  
  3580. {$IFDEF UNICODE}
  3581.   {$EXTERNALSYM LPSTR_TEXTCALLBACK}
  3582.   LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;
  3583. {$ELSE}
  3584.   {$EXTERNALSYM LPSTR_TEXTCALLBACK}
  3585.   LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
  3586. {$ENDIF}
  3587.  
  3588.   {$EXTERNALSYM I_IMAGECALLBACK}
  3589.   I_IMAGECALLBACK         = -1;
  3590.  
  3591. const
  3592.   {$EXTERNALSYM LVM_GETITEMA}
  3593.   LVM_GETITEMA            = LVM_FIRST + 5;
  3594.   {$EXTERNALSYM LVM_SETITEMA}
  3595.   LVM_SETITEMA            = LVM_FIRST + 6;
  3596.   {$EXTERNALSYM LVM_INSERTITEMA}
  3597.   LVM_INSERTITEMA         = LVM_FIRST + 7;
  3598.  
  3599.   {$EXTERNALSYM LVM_GETITEMW}
  3600.   LVM_GETITEMW            = LVM_FIRST + 75;
  3601.   {$EXTERNALSYM LVM_SETITEMW}
  3602.   LVM_SETITEMW            = LVM_FIRST + 76;
  3603.   {$EXTERNALSYM LVM_INSERTITEMW}
  3604.   LVM_INSERTITEMW         = LVM_FIRST + 77;
  3605.  
  3606. {$IFDEF UNICODE}
  3607.   {$EXTERNALSYM LVM_GETITEM}
  3608.   LVM_GETITEM            = LVM_GETITEMW;
  3609.   {$EXTERNALSYM LVM_SETITEM}
  3610.   LVM_SETITEM            = LVM_SETITEMW;
  3611.   {$EXTERNALSYM LVM_INSERTITEM}
  3612.   LVM_INSERTITEM         = LVM_INSERTITEMW;
  3613. {$ELSE}
  3614.   {$EXTERNALSYM LVM_GETITEM}
  3615.   LVM_GETITEM            = LVM_GETITEMA;
  3616.   {$EXTERNALSYM LVM_SETITEM}
  3617.   LVM_SETITEM            = LVM_SETITEMA;
  3618.   {$EXTERNALSYM LVM_INSERTITEM}
  3619.   LVM_INSERTITEM         = LVM_INSERTITEMA;
  3620. {$ENDIF}
  3621.  
  3622.   {$EXTERNALSYM LVM_DELETEITEM}
  3623.   LVM_DELETEITEM          = LVM_FIRST + 8;
  3624.   {$EXTERNALSYM LVM_DELETEALLITEMS}
  3625.   LVM_DELETEALLITEMS      = LVM_FIRST + 9;
  3626.   {$EXTERNALSYM LVM_GETCALLBACKMASK}
  3627.   LVM_GETCALLBACKMASK     = LVM_FIRST + 10;
  3628.   {$EXTERNALSYM LVM_SETCALLBACKMASK}
  3629.   LVM_SETCALLBACKMASK     = LVM_FIRST + 11;
  3630.  
  3631. {$EXTERNALSYM ListView_GetItemA}
  3632. function ListView_GetItemA(hWnd: HWND; var pItem: TLVItemA): Bool;
  3633. {$EXTERNALSYM ListView_GetItemW}
  3634. function ListView_GetItemW(hWnd: HWND; var pItem: TLVItemW): Bool;
  3635. {$EXTERNALSYM ListView_GetItem}
  3636. function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;
  3637. {$EXTERNALSYM ListView_SetItemA}
  3638. function ListView_SetItemA(hWnd: HWND; const pItem: TLVItemA): Bool;
  3639. {$EXTERNALSYM ListView_SetItemW}
  3640. function ListView_SetItemW(hWnd: HWND; const pItem: TLVItemW): Bool;
  3641. {$EXTERNALSYM ListView_SetItem}
  3642. function ListView_SetItem(hWnd: HWND; const pItem: TLVItem): Bool;
  3643. {$EXTERNALSYM ListView_InsertItemA}
  3644. function ListView_InsertItemA(hWnd: HWND; const pItem: TLVItemA): Integer;
  3645. {$EXTERNALSYM ListView_InsertItemW}
  3646. function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer;
  3647. {$EXTERNALSYM ListView_InsertItem}
  3648. function ListView_InsertItem(hWnd: HWND; const pItem: TLVItem): Integer;
  3649. {$EXTERNALSYM ListView_DeleteItem}
  3650. function ListView_DeleteItem(hWnd: HWND; i: Integer): Bool;
  3651. {$EXTERNALSYM ListView_DeleteAllItems}
  3652. function ListView_DeleteAllItems(hWnd: HWND): Bool;
  3653. {$EXTERNALSYM ListView_GetCallbackMask}
  3654. function ListView_GetCallbackMask(hWnd: HWND): UINT;
  3655. {$EXTERNALSYM ListView_SetCallbackMask}
  3656. function ListView_SetCallbackMask(hWnd: HWND; mask: UINT): Bool;
  3657.  
  3658. const
  3659.   {$EXTERNALSYM LVNI_ALL}
  3660.   LVNI_ALL                = $0000;
  3661.   {$EXTERNALSYM LVNI_FOCUSED}
  3662.   LVNI_FOCUSED            = $0001;
  3663.   {$EXTERNALSYM LVNI_SELECTED}
  3664.   LVNI_SELECTED           = $0002;
  3665.   {$EXTERNALSYM LVNI_CUT}
  3666.   LVNI_CUT                = $0004;
  3667.   {$EXTERNALSYM LVNI_DROPHILITED}
  3668.   LVNI_DROPHILITED        = $0008;
  3669.  
  3670.   {$EXTERNALSYM LVNI_ABOVE}
  3671.   LVNI_ABOVE              = $0100;
  3672.   {$EXTERNALSYM LVNI_BELOW}
  3673.   LVNI_BELOW              = $0200;
  3674.   {$EXTERNALSYM LVNI_TOLEFT}
  3675.   LVNI_TOLEFT             = $0400;
  3676.   {$EXTERNALSYM LVNI_TORIGHT}
  3677.   LVNI_TORIGHT            = $0800;
  3678.  
  3679.  
  3680. const
  3681.   {$EXTERNALSYM LVM_GETNEXTITEM}
  3682.   LVM_GETNEXTITEM         = LVM_FIRST + 12;
  3683.  
  3684. {$EXTERNALSYM ListView_GetNextItem}
  3685. function ListView_GetNextItem(hWnd: HWND; iStart: Integer; Flags: UINT): Integer;
  3686.  
  3687. const
  3688.   {$EXTERNALSYM LVFI_PARAM}
  3689.   LVFI_PARAM              = $0001;
  3690.   {$EXTERNALSYM LVFI_STRING}
  3691.   LVFI_STRING             = $0002;
  3692.   {$EXTERNALSYM LVFI_PARTIAL}
  3693.   LVFI_PARTIAL            = $0008;
  3694.   {$EXTERNALSYM LVFI_WRAP}
  3695.   LVFI_WRAP               = $0020;
  3696.   {$EXTERNALSYM LVFI_NEARESTXY}
  3697.   LVFI_NEARESTXY          = $0040;
  3698.  
  3699.  
  3700. type
  3701.   PLVFindInfoA = ^TLVFindInfoA;
  3702.   PLVFindInfoW = ^TLVFindInfoW;
  3703.   PLVFindInfo = PLVFindInfoA;
  3704.   {$EXTERNALSYM tagLVFINDINFOA}
  3705.   tagLVFINDINFOA = packed record
  3706.     flags: UINT;
  3707.     psz: PAnsiChar;
  3708.     lParam: LPARAM;
  3709.     pt: TPoint;
  3710.     vkDirection: UINT;
  3711.   end;
  3712.   {$EXTERNALSYM tagLVFINDINFOW}
  3713.   tagLVFINDINFOW = packed record
  3714.     flags: UINT;
  3715.     psz: PWideChar;
  3716.     lParam: LPARAM;
  3717.     pt: TPoint;
  3718.     vkDirection: UINT;
  3719.   end;
  3720.   {$EXTERNALSYM tagLVFINDINFO}
  3721.   tagLVFINDINFO = tagLVFINDINFOA;
  3722.   {$EXTERNALSYM _LV_FINDINFOA}
  3723.   _LV_FINDINFOA = tagLVFINDINFOA;
  3724.   {$EXTERNALSYM _LV_FINDINFOW}
  3725.   _LV_FINDINFOW = tagLVFINDINFOW;
  3726.   {$EXTERNALSYM _LV_FINDINFO}
  3727.   _LV_FINDINFO = _LV_FINDINFOA;
  3728.   TLVFindInfoA = tagLVFINDINFOA;
  3729.   TLVFindInfoW = tagLVFINDINFOW;
  3730.   TLVFindInfo = TLVFindInfoA;
  3731.   {$EXTERNALSYM LV_FINDINFOA}
  3732.   LV_FINDINFOA = tagLVFINDINFOA;
  3733.   {$EXTERNALSYM LV_FINDINFOW}
  3734.   LV_FINDINFOW = tagLVFINDINFOW;
  3735.   {$EXTERNALSYM LV_FINDINFO}
  3736.   LV_FINDINFO = LV_FINDINFOA;
  3737.  
  3738. const
  3739.   {$EXTERNALSYM LVM_FINDITEMA}
  3740.   LVM_FINDITEMA            = LVM_FIRST + 13;
  3741.   {$EXTERNALSYM LVM_FINDITEMW}
  3742.   LVM_FINDITEMW            = LVM_FIRST + 83;
  3743. {$IFDEF UNICODE}
  3744.   {$EXTERNALSYM LVM_FINDITEM}
  3745.   LVM_FINDITEM            = LVM_FINDITEMW;
  3746. {$ELSE}
  3747.   {$EXTERNALSYM LVM_FINDITEM}
  3748.   LVM_FINDITEM            = LVM_FINDITEMA;
  3749. {$ENDIF}
  3750.  
  3751. {$EXTERNALSYM ListView_FindItemA}
  3752. function ListView_FindItemA(hWnd: HWND; iStart: Integer;
  3753.   const plvfi: TLVFindInfoA): Integer;
  3754. {$EXTERNALSYM ListView_FindItemW}
  3755. function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  3756.   const plvfi: TLVFindInfoW): Integer;
  3757. {$EXTERNALSYM ListView_FindItem}
  3758. function ListView_FindItem(hWnd: HWND; iStart: Integer;
  3759.   const plvfi: TLVFindInfo): Integer;
  3760.  
  3761. const
  3762.   {$EXTERNALSYM LVIR_BOUNDS}
  3763.   LVIR_BOUNDS             = 0;
  3764.   {$EXTERNALSYM LVIR_ICON}
  3765.   LVIR_ICON               = 1;
  3766.   {$EXTERNALSYM LVIR_LABEL}
  3767.   LVIR_LABEL              = 2;
  3768.   {$EXTERNALSYM LVIR_SELECTBOUNDS}
  3769.   LVIR_SELECTBOUNDS       = 3;
  3770.  
  3771.  
  3772. const
  3773.   {$EXTERNALSYM LVM_GETITEMRECT}
  3774.   LVM_GETITEMRECT         = LVM_FIRST + 14;
  3775.  
  3776. {$EXTERNALSYM ListView_GetItemRect}
  3777. function ListView_GetItemRect(hWnd: HWND; i: Integer; var prc: TRect;
  3778.   Code: Integer): Bool;
  3779.  
  3780. const
  3781.   {$EXTERNALSYM LVM_SETITEMPOSITION}
  3782.   LVM_SETITEMPOSITION     = LVM_FIRST + 15;
  3783.  
  3784. {$EXTERNALSYM ListView_SetItemPosition}
  3785. function ListView_SetItemPosition(hWnd: HWND; i, x, y: Integer): Bool;
  3786.  
  3787. const
  3788.   {$EXTERNALSYM LVM_GETITEMPOSITION}
  3789.   LVM_GETITEMPOSITION     = LVM_FIRST + 16;
  3790.  
  3791. {$EXTERNALSYM ListView_GetItemPosition}
  3792. function ListView_GetItemPosition(hwndLV: HWND; i: Integer; var ppt: TPoint): Bool;
  3793.  
  3794. const
  3795.   {$EXTERNALSYM LVM_GETSTRINGWIDTHA}
  3796.   LVM_GETSTRINGWIDTHA      = LVM_FIRST + 17;
  3797.   {$EXTERNALSYM LVM_GETSTRINGWIDTHW}
  3798.   LVM_GETSTRINGWIDTHW      = LVM_FIRST + 87;
  3799. {$IFDEF UNICODE}
  3800.   {$EXTERNALSYM LVM_GETSTRINGWIDTH}
  3801.   LVM_GETSTRINGWIDTH      = LVM_GETSTRINGWIDTHW;
  3802. {$ELSE}
  3803.   {$EXTERNALSYM LVM_GETSTRINGWIDTH}
  3804.   LVM_GETSTRINGWIDTH      = LVM_GETSTRINGWIDTHA;
  3805. {$ENDIF}
  3806.  
  3807. {$EXTERNALSYM ListView_GetStringWidthA}
  3808. function ListView_GetStringWidthA(hwndLV: HWND; psz: PAnsiChar): Integer;
  3809. {$EXTERNALSYM ListView_GetStringWidthW}
  3810. function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer;
  3811. {$EXTERNALSYM ListView_GetStringWidth}
  3812. function ListView_GetStringWidth(hwndLV: HWND; psz: PChar): Integer;
  3813.  
  3814. const
  3815.   {$EXTERNALSYM LVHT_NOWHERE}
  3816.   LVHT_NOWHERE            = $0001;
  3817.   {$EXTERNALSYM LVHT_ONITEMICON}
  3818.   LVHT_ONITEMICON         = $0002;
  3819.   {$EXTERNALSYM LVHT_ONITEMLABEL}
  3820.   LVHT_ONITEMLABEL        = $0004;
  3821.   {$EXTERNALSYM LVHT_ONITEMSTATEICON}
  3822.   LVHT_ONITEMSTATEICON    = $0008;
  3823.   {$EXTERNALSYM LVHT_ONITEM}
  3824.   LVHT_ONITEM             = LVHT_ONITEMICON or LVHT_ONITEMLABEL or
  3825.                 LVHT_ONITEMSTATEICON;
  3826.   {$EXTERNALSYM LVHT_ABOVE}
  3827.   LVHT_ABOVE              = $0008;
  3828.   {$EXTERNALSYM LVHT_BELOW}
  3829.   LVHT_BELOW              = $0010;
  3830.   {$EXTERNALSYM LVHT_TORIGHT}
  3831.   LVHT_TORIGHT            = $0020;
  3832.   {$EXTERNALSYM LVHT_TOLEFT}
  3833.   LVHT_TOLEFT             = $0040;
  3834.  
  3835. type
  3836.   PLVHitTestInfo = ^TLVHitTestInfo;
  3837.   {$EXTERNALSYM tagLVHITTESTINFO}
  3838.   tagLVHITTESTINFO = packed record
  3839.     pt: TPoint;
  3840.     flags: UINT;
  3841.     iItem: Integer;
  3842.     iSubItem: Integer;    // this is was NOT in win95.  valid only for LVM_SUBITEMHITTEST
  3843.   end;
  3844.   TLVHitTestInfo = tagLVHITTESTINFO;
  3845.   {$EXTERNALSYM LV_HITTESTINFO}
  3846.   LV_HITTESTINFO = tagLVHITTESTINFO;
  3847.   {$EXTERNALSYM _LV_HITTESTINFO}
  3848.   _LV_HITTESTINFO = tagLVHITTESTINFO;
  3849.  
  3850. const
  3851.   {$EXTERNALSYM LVM_HITTEST}
  3852.   LVM_HITTEST             = LVM_FIRST + 18;
  3853.  
  3854. {$EXTERNALSYM ListView_HitTest}
  3855. function ListView_HitTest(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer;
  3856.  
  3857. const
  3858.   {$EXTERNALSYM LVM_ENSUREVISIBLE}
  3859.   LVM_ENSUREVISIBLE       = LVM_FIRST + 19;
  3860.  
  3861. {$EXTERNALSYM ListView_EnsureVisible}
  3862. function ListView_EnsureVisible(hwndLV: HWND; i: Integer; fPartialOK: Bool): Bool;
  3863.  
  3864. const
  3865.   {$EXTERNALSYM LVM_SCROLL}
  3866.   LVM_SCROLL              = LVM_FIRST + 20;
  3867.  
  3868. {$EXTERNALSYM ListView_Scroll}
  3869. function ListView_Scroll(hwndLV: HWnd; DX, DY: Integer): Bool;
  3870.  
  3871. const
  3872.   {$EXTERNALSYM LVM_REDRAWITEMS}
  3873.   LVM_REDRAWITEMS         = LVM_FIRST + 21;
  3874.  
  3875. {$EXTERNALSYM ListView_RedrawItems}
  3876. function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool;
  3877.  
  3878. const
  3879.   {$EXTERNALSYM LVA_DEFAULT}
  3880.   LVA_DEFAULT             = $0000;
  3881.   {$EXTERNALSYM LVA_ALIGNLEFT}
  3882.   LVA_ALIGNLEFT           = $0001;
  3883.   {$EXTERNALSYM LVA_ALIGNTOP}
  3884.   LVA_ALIGNTOP            = $0002;
  3885.   LVA_ALIGNRIGHT          = $0003;
  3886.   LVA_ALIGNBOTTOM         = $0004;
  3887.   {$EXTERNALSYM LVA_SNAPTOGRID}
  3888.   LVA_SNAPTOGRID          = $0005;
  3889.  
  3890.   LVA_SORTASCENDING       = $0100;
  3891.   LVA_SORTDESCENDING      = $0200;
  3892.  
  3893.   {$EXTERNALSYM LVM_ARRANGE}
  3894.   LVM_ARRANGE             = LVM_FIRST + 22;
  3895.  
  3896. {$EXTERNALSYM ListView_Arrange}
  3897. function ListView_Arrange(hwndLV: HWND; Code: UINT): Bool;
  3898.  
  3899.  
  3900. const
  3901.   {$EXTERNALSYM LVM_EDITLABELA}
  3902.   LVM_EDITLABELA           = LVM_FIRST + 23;
  3903.   {$EXTERNALSYM LVM_EDITLABELW}
  3904.   LVM_EDITLABELW           = LVM_FIRST + 118;
  3905. {$IFDEF UNICODE}
  3906.   {$EXTERNALSYM LVM_EDITLABEL}
  3907.   LVM_EDITLABEL           = LVM_EDITLABELW;
  3908. {$ELSE}
  3909.   {$EXTERNALSYM LVM_EDITLABEL}
  3910.   LVM_EDITLABEL           = LVM_EDITLABELA;
  3911. {$ENDIF}
  3912.  
  3913. {$EXTERNALSYM ListView_EditLabelA}
  3914. function ListView_EditLabelA(hwndLV: HWND; i: Integer): HWND;
  3915. {$EXTERNALSYM ListView_EditLabelW}
  3916. function ListView_EditLabelW(hwndLV: HWND; i: Integer): HWND;
  3917. {$EXTERNALSYM ListView_EditLabel}
  3918. function ListView_EditLabel(hwndLV: HWND; i: Integer): HWND;
  3919.  
  3920. const
  3921.   {$EXTERNALSYM LVM_GETEDITCONTROL}
  3922.   LVM_GETEDITCONTROL      = LVM_FIRST + 24;
  3923.  
  3924. {$EXTERNALSYM ListView_GetEditControl}
  3925. function ListView_GetEditControl(hwndLV: HWND): HWND;
  3926.  
  3927. type
  3928.   PLVColumnA = ^TLVColumnA;
  3929.   PLVColumnW = ^TLVColumnW;
  3930.   PLVColumn = PLVColumnA;
  3931.   {$EXTERNALSYM tagLVCOLUMNA}
  3932.   tagLVCOLUMNA = packed record
  3933.     mask: UINT;
  3934.     fmt: Integer;
  3935.     cx: Integer;
  3936.     pszText: PAnsiChar;
  3937.     cchTextMax: Integer;
  3938.     iSubItem: Integer;
  3939.     iImage: Integer;
  3940.     iOrder: Integer;
  3941.   end;
  3942.   {$EXTERNALSYM tagLVCOLUMNW}
  3943.   tagLVCOLUMNW = packed record
  3944.     mask: UINT;
  3945.     fmt: Integer;
  3946.     cx: Integer;
  3947.     pszText: PWideChar;
  3948.     cchTextMax: Integer;
  3949.     iSubItem: Integer;
  3950.     iImage: Integer;
  3951.     iOrder: Integer;
  3952.   end;
  3953.   {$EXTERNALSYM tagLVCOLUMN}
  3954.   tagLVCOLUMN = tagLVCOLUMNA;
  3955.   {$EXTERNALSYM _LV_COLUMNA}
  3956.   _LV_COLUMNA = tagLVCOLUMNA;
  3957.   {$EXTERNALSYM _LV_COLUMNW}
  3958.   _LV_COLUMNW = tagLVCOLUMNW;
  3959.   {$EXTERNALSYM _LV_COLUMN}
  3960.   _LV_COLUMN = _LV_COLUMNA;
  3961.   TLVColumnA = tagLVCOLUMNA;
  3962.   TLVColumnW = tagLVCOLUMNW;
  3963.   TLVColumn = TLVColumnA;
  3964.   {$EXTERNALSYM LV_COLUMNA}
  3965.   LV_COLUMNA = tagLVCOLUMNA;
  3966.   {$EXTERNALSYM LV_COLUMNW}
  3967.   LV_COLUMNW = tagLVCOLUMNW;
  3968.   {$EXTERNALSYM LV_COLUMN}
  3969.   LV_COLUMN = LV_COLUMNA;
  3970.  
  3971. const
  3972.   {$EXTERNALSYM LVCF_FMT}
  3973.   LVCF_FMT                = $0001;
  3974.   {$EXTERNALSYM LVCF_WIDTH}
  3975.   LVCF_WIDTH              = $0002;
  3976.   {$EXTERNALSYM LVCF_TEXT}
  3977.   LVCF_TEXT               = $0004;
  3978.   {$EXTERNALSYM LVCF_SUBITEM}
  3979.   LVCF_SUBITEM            = $0008;
  3980.   {$EXTERNALSYM LVCF_IMAGE}
  3981.   LVCF_IMAGE              = $0010;
  3982.   {$EXTERNALSYM LVCF_ORDER}
  3983.   LVCF_ORDER              = $0020;
  3984.  
  3985.   {$EXTERNALSYM LVCFMT_LEFT}
  3986.   LVCFMT_LEFT             = $0000; 
  3987.   {$EXTERNALSYM LVCFMT_RIGHT}
  3988.   LVCFMT_RIGHT            = $0001;
  3989.   {$EXTERNALSYM LVCFMT_CENTER}
  3990.   LVCFMT_CENTER           = $0002; 
  3991.   {$EXTERNALSYM LVCFMT_JUSTIFYMASK}
  3992.   LVCFMT_JUSTIFYMASK      = $0003;
  3993.   {$EXTERNALSYM LVCFMT_IMAGE}
  3994.   LVCFMT_IMAGE            = $0800;
  3995.   {$EXTERNALSYM LVCFMT_BITMAP_ON_RIGHT}
  3996.   LVCFMT_BITMAP_ON_RIGHT  = $1000;
  3997.   {$EXTERNALSYM LVCFMT_COL_HAS_IMAGES}
  3998.   LVCFMT_COL_HAS_IMAGES   = $8000;
  3999.  
  4000.   {$EXTERNALSYM LVM_GETCOLUMNA}
  4001.   LVM_GETCOLUMNA          = LVM_FIRST + 25;
  4002.   {$EXTERNALSYM LVM_GETCOLUMNW}
  4003.   LVM_GETCOLUMNW          = LVM_FIRST + 95;
  4004. {$IFDEF UNICODE}
  4005.   {$EXTERNALSYM LVM_GETCOLUMN}
  4006.   LVM_GETCOLUMN           = LVM_GETCOLUMNW;
  4007. {$ELSE}
  4008.   {$EXTERNALSYM LVM_GETCOLUMN}
  4009.   LVM_GETCOLUMN           = LVM_GETCOLUMNA;
  4010. {$ENDIF}
  4011.  
  4012. {$EXTERNALSYM ListView_GetColumnA}
  4013. function ListView_GetColumnA(hwnd: HWND; iCol: Integer;
  4014.   var pcol: TLVColumnA): Bool;
  4015. {$EXTERNALSYM ListView_GetColumnW}
  4016. function ListView_GetColumnW(hwnd: HWND; iCol: Integer;
  4017.   var pcol: TLVColumnW): Bool;
  4018. {$EXTERNALSYM ListView_GetColumn}
  4019. function ListView_GetColumn(hwnd: HWND; iCol: Integer;
  4020.   var pcol: TLVColumn): Bool;
  4021.  
  4022. const
  4023.   {$EXTERNALSYM LVM_SETCOLUMNA}
  4024.   LVM_SETCOLUMNA           = LVM_FIRST + 26;
  4025.   {$EXTERNALSYM LVM_SETCOLUMNW}
  4026.   LVM_SETCOLUMNW           = LVM_FIRST + 96;
  4027. {$IFDEF UNICODE}
  4028.   {$EXTERNALSYM LVM_SETCOLUMN}
  4029.   LVM_SETCOLUMN           = LVM_SETCOLUMNW;
  4030. {$ELSE}
  4031.   {$EXTERNALSYM LVM_SETCOLUMN}
  4032.   LVM_SETCOLUMN           = LVM_SETCOLUMNA;
  4033. {$ENDIF}
  4034.  
  4035. {$EXTERNALSYM ListView_SetColumnA}
  4036. function ListView_SetColumnA(hwnd: HWnd; iCol: Integer; const pcol: TLVColumnA): Bool;
  4037. {$EXTERNALSYM ListView_SetColumnW}
  4038. function ListView_SetColumnW(hwnd: HWnd; iCol: Integer; const pcol: TLVColumnW): Bool;
  4039. {$EXTERNALSYM ListView_SetColumn}
  4040. function ListView_SetColumn(hwnd: HWnd; iCol: Integer; const pcol: TLVColumn): Bool;
  4041.  
  4042. const
  4043.   {$EXTERNALSYM LVM_INSERTCOLUMNA}
  4044.   LVM_INSERTCOLUMNA        = LVM_FIRST + 27;
  4045.   {$EXTERNALSYM LVM_INSERTCOLUMNW}
  4046.   LVM_INSERTCOLUMNW        = LVM_FIRST + 97;
  4047. {$IFDEF UNICODE}
  4048.   {$EXTERNALSYM LVM_INSERTCOLUMN}
  4049.   LVM_INSERTCOLUMN        = LVM_INSERTCOLUMNW;
  4050. {$ELSE}
  4051.   {$EXTERNALSYM LVM_INSERTCOLUMN}
  4052.   LVM_INSERTCOLUMN        = LVM_INSERTCOLUMNA;
  4053. {$ENDIF}
  4054.  
  4055. {$EXTERNALSYM ListView_InsertColumnA}
  4056. function ListView_InsertColumnA(hwnd: HWND; iCol: Integer;
  4057.   const pcol: TLVColumnA): Integer;
  4058. {$EXTERNALSYM ListView_InsertColumnW}
  4059. function ListView_InsertColumnW(hwnd: HWND; iCol: Integer;
  4060.   const pcol: TLVColumnW): Integer;
  4061. {$EXTERNALSYM ListView_InsertColumn}
  4062. function ListView_InsertColumn(hwnd: HWND; iCol: Integer;
  4063.   const pcol: TLVColumn): Integer;
  4064.  
  4065. const
  4066.   {$EXTERNALSYM LVM_DELETECOLUMN}
  4067.   LVM_DELETECOLUMN        = LVM_FIRST + 28;
  4068.  
  4069. {$EXTERNALSYM ListView_DeleteColumn}
  4070. function ListView_DeleteColumn(hwnd: HWND; iCol: Integer): Bool;
  4071.  
  4072. const
  4073.   {$EXTERNALSYM LVM_GETCOLUMNWIDTH}
  4074.   LVM_GETCOLUMNWIDTH      = LVM_FIRST + 29;
  4075.  
  4076. {$EXTERNALSYM ListView_GetColumnWidth}
  4077. function ListView_GetColumnWidth(hwnd: HWND; iCol: Integer): Integer;
  4078.  
  4079. const
  4080.   {$EXTERNALSYM LVSCW_AUTOSIZE}
  4081.   LVSCW_AUTOSIZE              = -1;
  4082.   {$EXTERNALSYM LVSCW_AUTOSIZE_USEHEADER}
  4083.   LVSCW_AUTOSIZE_USEHEADER    = -2;
  4084.   {$EXTERNALSYM LVM_SETCOLUMNWIDTH}
  4085.   LVM_SETCOLUMNWIDTH          = LVM_FIRST + 30;
  4086.  
  4087. {$EXTERNALSYM ListView_SetColumnWidth}
  4088. function ListView_SetColumnWidth(hwnd: HWnd; iCol: Integer; cx: Integer): Bool;
  4089.  
  4090. const
  4091.   {$EXTERNALSYM LVM_GETHEADER}
  4092.   LVM_GETHEADER               = LVM_FIRST + 31;
  4093.  
  4094. {$EXTERNALSYM ListView_GetHeader}
  4095. function ListView_GetHeader(hwnd: HWND): HWND;
  4096.  
  4097. const
  4098.   {$EXTERNALSYM LVM_CREATEDRAGIMAGE}
  4099.   LVM_CREATEDRAGIMAGE     = LVM_FIRST + 33;
  4100.  
  4101. {$EXTERNALSYM ListView_CreateDragImage}
  4102. function ListView_CreateDragImage(hwnd: HWND; i: Integer;
  4103.   const lpptUpLeft: TPoint): HIMAGELIST;
  4104.  
  4105. const
  4106.   {$EXTERNALSYM LVM_GETVIEWRECT}
  4107.   LVM_GETVIEWRECT         = LVM_FIRST + 34;
  4108.  
  4109. {$EXTERNALSYM ListView_GetViewRect}
  4110. function ListView_GetViewRect(hwnd: HWND; var prc: TRect): Bool;
  4111.  
  4112. const
  4113.   {$EXTERNALSYM LVM_GETTEXTCOLOR}
  4114.   LVM_GETTEXTCOLOR        = LVM_FIRST + 35;
  4115.  
  4116. {$EXTERNALSYM ListView_GetTextColor}
  4117. function ListView_GetTextColor(hwnd: HWND): TColorRef;
  4118.  
  4119. const
  4120.   {$EXTERNALSYM LVM_SETTEXTCOLOR}
  4121.   LVM_SETTEXTCOLOR        = LVM_FIRST + 36;
  4122.  
  4123. {$EXTERNALSYM ListView_SetTextColor}
  4124. function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool;
  4125.  
  4126. const
  4127.   {$EXTERNALSYM LVM_GETTEXTBKCOLOR}
  4128.   LVM_GETTEXTBKCOLOR      = LVM_FIRST + 37;
  4129.  
  4130. {$EXTERNALSYM ListView_GetTextBkColor}
  4131. function ListView_GetTextBkColor(hwnd: HWND): TColorRef;
  4132.  
  4133. const
  4134.   {$EXTERNALSYM LVM_SETTEXTBKCOLOR}
  4135.   LVM_SETTEXTBKCOLOR      = LVM_FIRST + 38;
  4136.  
  4137. {$EXTERNALSYM ListView_SetTextBkColor}
  4138. function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool;
  4139.  
  4140. const
  4141.   {$EXTERNALSYM LVM_GETTOPINDEX}
  4142.   LVM_GETTOPINDEX         = LVM_FIRST + 39;
  4143.  
  4144. {$EXTERNALSYM ListView_GetTopIndex}
  4145. function ListView_GetTopIndex(hwndLV: HWND): Integer;
  4146.  
  4147. const
  4148.   {$EXTERNALSYM LVM_GETCOUNTPERPAGE}
  4149.   LVM_GETCOUNTPERPAGE     = LVM_FIRST + 40;
  4150.  
  4151. {$EXTERNALSYM ListView_GetCountPerPage}
  4152. function ListView_GetCountPerPage(hwndLV: HWND): Integer;
  4153.  
  4154. const
  4155.   {$EXTERNALSYM LVM_GETORIGIN}
  4156.   LVM_GETORIGIN           = LVM_FIRST + 41;
  4157.  
  4158. {$EXTERNALSYM ListView_GetOrigin}
  4159. function ListView_GetOrigin(hwndLV: HWND; var ppt: TPoint): Bool;
  4160.  
  4161. const
  4162.   {$EXTERNALSYM LVM_UPDATE}
  4163.   LVM_UPDATE              = LVM_FIRST + 42;
  4164.  
  4165. {$EXTERNALSYM ListView_Update}
  4166. function ListView_Update(hwndLV: HWND; i: Integer): Bool;
  4167.  
  4168. const
  4169.   {$EXTERNALSYM LVM_SETITEMSTATE}
  4170.   LVM_SETITEMSTATE        = LVM_FIRST + 43;
  4171.  
  4172. {$EXTERNALSYM ListView_SetItemState}
  4173. function ListView_SetItemState(hwndLV: HWND; i: Integer; data, mask: UINT): Bool;
  4174.  
  4175. const
  4176.   {$EXTERNALSYM LVM_GETITEMSTATE}
  4177.   LVM_GETITEMSTATE        = LVM_FIRST + 44;
  4178.  
  4179. {$EXTERNALSYM ListView_GetItemState}
  4180. function ListView_GetItemState(hwndLV: HWND; i, mask: Integer): Integer;
  4181.  
  4182. {$EXTERNALSYM ListView_GetCheckState}
  4183. function ListView_GetCheckState(hwndLV: HWND; i: Integer): UINT;
  4184. procedure ListView_SetCheckState(hwndLV: HWND; i: Integer; Checked: Boolean);
  4185.  
  4186. const
  4187.   {$EXTERNALSYM LVM_GETITEMTEXTA}
  4188.   LVM_GETITEMTEXTA         = LVM_FIRST + 45;
  4189.   {$EXTERNALSYM LVM_GETITEMTEXTW}
  4190.   LVM_GETITEMTEXTW         = LVM_FIRST + 115;
  4191. {$IFDEF UNICODE}
  4192.   {$EXTERNALSYM LVM_GETITEMTEXT}
  4193.   LVM_GETITEMTEXT         = LVM_GETITEMTEXTW;
  4194. {$ELSE}
  4195.   {$EXTERNALSYM LVM_GETITEMTEXT}
  4196.   LVM_GETITEMTEXT         = LVM_GETITEMTEXTA;
  4197. {$ENDIF}
  4198.  
  4199. {$EXTERNALSYM ListView_GetItemTextA}
  4200. function ListView_GetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  4201.   pszText: PAnsiChar; cchTextMax: Integer): Integer;
  4202. {$EXTERNALSYM ListView_GetItemTextW}
  4203. function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  4204.   pszText: PWideChar; cchTextMax: Integer): Integer;
  4205. {$EXTERNALSYM ListView_GetItemText}
  4206. function ListView_GetItemText(hwndLV: HWND; i, iSubItem: Integer;
  4207.   pszText: PChar; cchTextMax: Integer): Integer;
  4208.  
  4209. const
  4210.   {$EXTERNALSYM LVM_SETITEMTEXTA}
  4211.   LVM_SETITEMTEXTA         = LVM_FIRST + 46;
  4212.   {$EXTERNALSYM LVM_SETITEMTEXTW}
  4213.   LVM_SETITEMTEXTW         = LVM_FIRST + 116;
  4214. {$IFDEF UNICODE}
  4215.   {$EXTERNALSYM LVM_SETITEMTEXT}
  4216.   LVM_SETITEMTEXT         = LVM_SETITEMTEXTW;
  4217. {$ELSE}
  4218.   {$EXTERNALSYM LVM_SETITEMTEXT}
  4219.   LVM_SETITEMTEXT         = LVM_SETITEMTEXTA;
  4220. {$ENDIF}
  4221.  
  4222. {$EXTERNALSYM ListView_SetItemTextA}
  4223. function ListView_SetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  4224.   pszText: PAnsiChar): Bool;
  4225. {$EXTERNALSYM ListView_SetItemTextW}
  4226. function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  4227.   pszText: PWideChar): Bool;
  4228. {$EXTERNALSYM ListView_SetItemText}
  4229. function ListView_SetItemText(hwndLV: HWND; i, iSubItem: Integer;
  4230.   pszText: PChar): Bool;
  4231.  
  4232. const
  4233.   // these flags only apply to LVS_OWNERDATA listviews in report or list mode
  4234.   {$EXTERNALSYM LVSICF_NOINVALIDATEALL}
  4235.   LVSICF_NOINVALIDATEALL  = $00000001;
  4236.   {$EXTERNALSYM LVSICF_NOSCROLL}
  4237.   LVSICF_NOSCROLL         = $00000002;
  4238.  
  4239.   {$EXTERNALSYM LVM_SETITEMCOUNT}
  4240.   LVM_SETITEMCOUNT        = LVM_FIRST + 47;
  4241.  
  4242. {$EXTERNALSYM ListView_SetItemCount}
  4243. procedure ListView_SetItemCount(hwndLV: HWND; cItems: Integer);
  4244.  
  4245. {$EXTERNALSYM ListView_SetItemCountEx}
  4246. procedure ListView_SetItemCountEx(hwndLV: HWND; cItems: Integer; dwFlags: DWORD);
  4247.  
  4248. type
  4249.   {$EXTERNALSYM PFNLVCOMPARE}
  4250.   PFNLVCOMPARE = function(lParam1, lParam2, lParamSort: Integer): Integer stdcall;
  4251.   TLVCompare = PFNLVCOMPARE;
  4252.  
  4253. const
  4254.   {$EXTERNALSYM LVM_SORTITEMS}
  4255.   LVM_SORTITEMS           = LVM_FIRST + 48;
  4256.  
  4257. {$EXTERNALSYM ListView_SortItems}
  4258. function ListView_SortItems(hwndLV: HWND; pfnCompare: TLVCompare;
  4259.   lPrm: Longint): Bool;
  4260.  
  4261. const
  4262.   {$EXTERNALSYM LVM_SETITEMPOSITION32}
  4263.   LVM_SETITEMPOSITION32   = LVM_FIRST + 49;
  4264.  
  4265. {$EXTERNALSYM ListView_SetItemPosition32}
  4266. procedure ListView_SetItemPosition32(hwndLV: HWND; i, x, y: Integer);
  4267.  
  4268. const
  4269.   {$EXTERNALSYM LVM_GETSELECTEDCOUNT}
  4270.   LVM_GETSELECTEDCOUNT    = LVM_FIRST + 50;
  4271.  
  4272. {$EXTERNALSYM ListView_GetSelectedCount}
  4273. function ListView_GetSelectedCount(hwndLV: HWND): UINT;
  4274.  
  4275. const
  4276.   {$EXTERNALSYM LVM_GETITEMSPACING}
  4277.   LVM_GETITEMSPACING      = LVM_FIRST + 51;
  4278.  
  4279. {$EXTERNALSYM ListView_GetItemSpacing}
  4280. function ListView_GetItemSpacing(hwndLV: HWND; fSmall: Integer): Longint;
  4281.  
  4282. const
  4283.   {$EXTERNALSYM LVM_GETISEARCHSTRINGA}
  4284.   LVM_GETISEARCHSTRINGA    = LVM_FIRST + 52;
  4285.   {$EXTERNALSYM LVM_GETISEARCHSTRINGW}
  4286.   LVM_GETISEARCHSTRINGW    = LVM_FIRST + 117;
  4287. {$IFDEF UNICODE}
  4288.   {$EXTERNALSYM LVM_GETISEARCHSTRING}
  4289.   LVM_GETISEARCHSTRING    = LVM_GETISEARCHSTRINGW;
  4290. {$ELSE}
  4291.   {$EXTERNALSYM LVM_GETISEARCHSTRING}
  4292.   LVM_GETISEARCHSTRING    = LVM_GETISEARCHSTRINGA;
  4293. {$ENDIF}
  4294.  
  4295. {$EXTERNALSYM ListView_GetISearchStringA}
  4296. function ListView_GetISearchStringA(hwndLV: HWND; lpsz: PAnsiChar): Bool;
  4297. {$EXTERNALSYM ListView_GetISearchStringW}
  4298. function ListView_GetISearchStringW(hwndLV: HWND; lpsz: PWideChar): Bool;
  4299. {$EXTERNALSYM ListView_GetISearchString}
  4300. function ListView_GetISearchString(hwndLV: HWND; lpsz: PChar): Bool;
  4301.  
  4302. const
  4303.   {$EXTERNALSYM LVM_SETICONSPACING}
  4304.   LVM_SETICONSPACING      = LVM_FIRST + 53;
  4305.  
  4306. // -1 for cx and cy means we'll use the default (system settings)
  4307. // 0 for cx or cy means use the current setting (allows you to change just one param)
  4308. {$EXTERNALSYM ListView_SetIconSpacing}
  4309. function ListView_SetIconSpacing(hwndLV: HWND; cx, cy: Word): DWORD;
  4310.  
  4311. const
  4312.   {$EXTERNALSYM LVM_SETEXTENDEDLISTVIEWSTYLE}
  4313.   LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
  4314.  
  4315. {$EXTERNALSYM ListView_SetExtendedListViewStyle}
  4316. function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL;
  4317.  
  4318. const
  4319.   {$EXTERNALSYM LVM_GETEXTENDEDLISTVIEWSTYLE}
  4320.   LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
  4321.  
  4322. {$EXTERNALSYM ListView_GetExtendedListViewStyle}
  4323. function ListView_GetExtendedListViewStyle(hwndLV: HWND): DWORD;
  4324.  
  4325. const
  4326.   {$EXTERNALSYM LVM_GETSUBITEMRECT}
  4327.   LVM_GETSUBITEMRECT      = LVM_FIRST + 56;
  4328.  
  4329. {$EXTERNALSYM ListView_GetSubItemRect}
  4330. function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer;
  4331.   code: DWORD; prc: PRect): BOOL;
  4332.  
  4333. const
  4334.   {$EXTERNALSYM LVM_SUBITEMHITTEST}
  4335.   LVM_SUBITEMHITTEST      = LVM_FIRST + 57;
  4336.  
  4337. {$EXTERNALSYM ListView_SubItemHitTest}
  4338. function ListView_SubItemHitTest(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer;
  4339.  
  4340. const
  4341.   {$EXTERNALSYM LVM_SETCOLUMNORDERARRAY}
  4342.   LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58;
  4343.  
  4344. {$EXTERNALSYM ListView_SetColumnOrderArray}
  4345. function ListView_SetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  4346.   pi: PInteger): BOOL;
  4347.  
  4348. const
  4349.   {$EXTERNALSYM LVM_GETCOLUMNORDERARRAY}
  4350.   LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59;
  4351.  
  4352. {$EXTERNALSYM ListView_GetColumnOrderArray}
  4353. function ListView_GetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  4354.   pi: PInteger): BOOL;
  4355.  
  4356. const
  4357.   {$EXTERNALSYM LVM_SETHOTITEM}
  4358.   LVM_SETHOTITEM  = LVM_FIRST + 60;
  4359.  
  4360. {$EXTERNALSYM ListView_SetHotItem}
  4361. function ListView_SetHotItem(hwndLV: HWND; i: Integer): Integer;
  4362.  
  4363. const
  4364.   {$EXTERNALSYM LVM_GETHOTITEM}
  4365.   LVM_GETHOTITEM  = LVM_FIRST + 61;
  4366.  
  4367. {$EXTERNALSYM ListView_GetHotItem}
  4368. function ListView_GetHotItem(hwndLV: HWND): Integer;
  4369.  
  4370. const
  4371.   {$EXTERNALSYM LVM_SETHOTCURSOR}
  4372.   LVM_SETHOTCURSOR  = LVM_FIRST + 62;
  4373.  
  4374. {$EXTERNALSYM ListView_SetHotCursor}
  4375. function ListView_SetHotCursor(hwndLV: HWND; hcur: HCURSOR): HCURSOR;
  4376.  
  4377. const
  4378.   {$EXTERNALSYM LVM_GETHOTCURSOR}
  4379.   LVM_GETHOTCURSOR  = LVM_FIRST + 63;
  4380.  
  4381. {$EXTERNALSYM ListView_GetHotCursor}
  4382. function ListView_GetHotCursor(hwndLV: HWND): HCURSOR;
  4383.  
  4384. const
  4385.   {$EXTERNALSYM LVM_APPROXIMATEVIEWRECT}
  4386.   LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64;
  4387.  
  4388. {$EXTERNALSYM ListView_ApproximateViewRect}
  4389. function ListView_ApproximateViewRect(hwndLV: HWND; iWidth, iHeight: Word;
  4390.   iCount: Integer): DWORD;
  4391.  
  4392. const
  4393.   {$EXTERNALSYM LV_MAX_WORKAREAS}
  4394.   LV_MAX_WORKAREAS        = 16;
  4395.   {$EXTERNALSYM LVM_SETWORKAREA}
  4396.   LVM_SETWORKAREA         = LVM_FIRST + 65;
  4397.  
  4398. {$EXTERNALSYM ListView_SetWorkAreas}
  4399. function ListView_SetWorkAreas(hwndLV: HWND; prc: PRect): BOOL;
  4400.  
  4401. const
  4402.   {$EXTERNALSYM LVM_GETSELECTIONMARK}
  4403.   LVM_GETSELECTIONMARK    = LVM_FIRST + 66;
  4404.  
  4405. {$EXTERNALSYM ListView_GetSelectionMark}
  4406. function ListView_GetSelectionMark(hwnd: HWND): Integer;
  4407.  
  4408. const
  4409.   {$EXTERNALSYM LVM_SETSELECTIONMARK}
  4410.   LVM_SETSELECTIONMARK    = LVM_FIRST + 67;
  4411.  
  4412. {$EXTERNALSYM ListView_SetSelectionMark}
  4413. function ListView_SetSelectionMark(hwnd: HWND; i: Integer): Integer;
  4414.  
  4415. const
  4416.   {$EXTERNALSYM LVM_GETWORKAREAS}
  4417.   LVM_GETWORKAREAS        = LVM_FIRST + 70;
  4418.  
  4419. {$EXTERNALSYM ListView_GetWorkAreas}
  4420. function ListView_GetWorkAreas(hwnd: HWND; nWorkAreas: Integer; prc: PRect): BOOL;
  4421.  
  4422. const
  4423.   {$EXTERNALSYM LVM_SETHOVERTIME}
  4424.   LVM_SETHOVERTIME        = LVM_FIRST + 71;
  4425.  
  4426. {$EXTERNALSYM ListView_SetHoverTime}
  4427. function ListView_SetHoverTime(hwndLV: HWND; dwHoverTimeMs: DWORD): DWORD;
  4428.  
  4429. const
  4430.   {$EXTERNALSYM LVM_GETHOVERTIME}
  4431.   LVM_GETHOVERTIME        = LVM_FIRST + 72;
  4432.  
  4433. {$EXTERNALSYM ListView_GetHoverTime}
  4434. function ListView_GetHoverTime(hwndLV: HWND): Integer;
  4435.  
  4436. const
  4437.   {$EXTERNALSYM LVM_GETNUMBEROFWORKAREAS}
  4438.   LVM_GETNUMBEROFWORKAREAS  = LVM_FIRST + 73;
  4439.  
  4440. {$EXTERNALSYM ListView_GetNumberOfWorkAreas}
  4441. function ListView_GetNumberOfWorkAreas(hwnd: HWND; pnWorkAreas: PInteger): Integer;
  4442.  
  4443. const
  4444.   {$EXTERNALSYM LVM_SETTOOLTIPS}
  4445.   LVM_SETTOOLTIPS       = LVM_FIRST + 74;
  4446.  
  4447. {$EXTERNALSYM ListView_SetToolTips}
  4448. function ListView_SetToolTips(hwndLV: HWND; hwndNewHwnd: HWND): HWND;
  4449.  
  4450. const
  4451.   {$EXTERNALSYM LVM_GETTOOLTIPS}
  4452.   LVM_GETTOOLTIPS       = LVM_FIRST + 78;
  4453.  
  4454. {$EXTERNALSYM ListView_GetToolTips}
  4455. function ListView_GetToolTips(hwndLV: HWND): HWND;
  4456.  
  4457. type
  4458. {$EXTERNALSYM tagLVBKIMAGEA}
  4459.   tagLVBKIMAGEA = packed record
  4460.     ulFlags: ULONG;              // LVBKIF_*
  4461.     hbm: HBITMAP;
  4462.     pszImage: PAnsiChar;
  4463.     cchImageMax: UINT;
  4464.     xOffsetPercent: Integer;
  4465.     yOffsetPercent: Integer;
  4466.   end;
  4467. {$EXTERNALSYM tagLVBKIMAGEW}
  4468.   tagLVBKIMAGEW = packed record
  4469.     ulFlags: ULONG;              // LVBKIF_*
  4470.     hbm: HBITMAP;
  4471.     pszImage: PWideChar;
  4472.     cchImageMax: UINT;
  4473.     xOffsetPercent: Integer;
  4474.     yOffsetPercent: Integer;
  4475.   end;
  4476.   {$EXTERNALSYM tagLVBKIMAGE}
  4477.   tagLVBKIMAGE = tagLVBKIMAGEA;
  4478.   PLVBKImageA = ^TLVBKImageA;
  4479.   PLVBKImageW = ^TLVBKImageW;
  4480.   PLVBKImage = PLVBKImageA;
  4481.   TLVBKImageA = tagLVBKIMAGEA;
  4482.   TLVBKImageW = tagLVBKIMAGEW;
  4483.   TLVBKImage = TLVBKImageA;
  4484.  
  4485. const
  4486.   {$EXTERNALSYM LVBKIF_SOURCE_NONE}
  4487.   LVBKIF_SOURCE_NONE      = $00000000;
  4488.   {$EXTERNALSYM LVBKIF_SOURCE_HBITMAP}
  4489.   LVBKIF_SOURCE_HBITMAP   = $00000001;
  4490.   {$EXTERNALSYM LVBKIF_SOURCE_URL}
  4491.   LVBKIF_SOURCE_URL       = $00000002;
  4492.   {$EXTERNALSYM LVBKIF_SOURCE_MASK}
  4493.   LVBKIF_SOURCE_MASK      = $00000003;
  4494.   {$EXTERNALSYM LVBKIF_STYLE_NORMAL}
  4495.   LVBKIF_STYLE_NORMAL     = $00000000;
  4496.   {$EXTERNALSYM LVBKIF_STYLE_TILE}
  4497.   LVBKIF_STYLE_TILE       = $00000010;
  4498.   {$EXTERNALSYM LVBKIF_STYLE_MASK}
  4499.   LVBKIF_STYLE_MASK       = $00000010;
  4500.  
  4501.   {$EXTERNALSYM LVM_SETBKIMAGEA}
  4502.   LVM_SETBKIMAGEA         = LVM_FIRST + 68;
  4503.   {$EXTERNALSYM LVM_SETBKIMAGEW}
  4504.   LVM_SETBKIMAGEW         = LVM_FIRST + 138;
  4505.   {$EXTERNALSYM LVM_GETBKIMAGEA}
  4506.   LVM_GETBKIMAGEA         = LVM_FIRST + 69;
  4507.   {$EXTERNALSYM LVM_GETBKIMAGEW}
  4508.   LVM_GETBKIMAGEW         = LVM_FIRST + 139;
  4509.  
  4510. {$IFDEF UNICODE}
  4511.   {$EXTERNALSYM LVM_SETBKIMAGE}
  4512.   LVM_SETBKIMAGE = LVM_SETBKIMAGEW;
  4513.   {$EXTERNALSYM LVM_GETBKIMAGE}
  4514.   LVM_GETBKIMAGE = LVM_GETBKIMAGEW;
  4515. {$ELSE}
  4516.   {$EXTERNALSYM LVM_SETBKIMAGE}
  4517.   LVM_SETBKIMAGE = LVM_SETBKIMAGEA;
  4518.   {$EXTERNALSYM LVM_GETBKIMAGE}
  4519.   LVM_GETBKIMAGE = LVM_GETBKIMAGEA;
  4520. {$ENDIF}
  4521.  
  4522. {$EXTERNALSYM ListView_SetBkImage}
  4523. function ListView_SetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  4524.  
  4525. {$EXTERNALSYM ListView_GetBkImage}
  4526. function ListView_GetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  4527.  
  4528. type
  4529.   {$EXTERNALSYM tagNMLISTVIEW}
  4530.   tagNMLISTVIEW = packed record
  4531.     hdr: TNMHDR;
  4532.     iItem: Integer;
  4533.     iSubItem: Integer;
  4534.     uNewState: UINT;
  4535.     uOldState: UINT;
  4536.     uChanged: UINT;
  4537.     ptAction: TPoint;
  4538.     lParam: LPARAM;
  4539.   end;
  4540.   {$EXTERNALSYM _NM_LISTVIEW}
  4541.   _NM_LISTVIEW = tagNMLISTVIEW;
  4542.   {$EXTERNALSYM NM_LISTVIEW}
  4543.   NM_LISTVIEW = tagNMLISTVIEW;
  4544.   PNMListView = ^TNMListView;
  4545.   TNMListView = tagNMLISTVIEW;
  4546.  
  4547.   // NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
  4548.   // therefore all the fields are the same except for extra uKeyFlags
  4549.   // they are used to store key flags at the time of the single click with
  4550.   // delayed activation - because by the time the timer goes off a user may
  4551.   // not hold the keys (shift, ctrl) any more
  4552.   {$EXTERNALSYM tagNMITEMACTIVATE}
  4553.   tagNMITEMACTIVATE = packed record
  4554.     hdr: TNMHdr;
  4555.     iItem: Integer;
  4556.     iSubItem: Integer;
  4557.     uNewState: UINT;
  4558.     uOldState: UINT;
  4559.     uChanged: UINT;
  4560.     ptAction: TPoint;
  4561.     lParam: LPARAM;
  4562.     uKeyFlags: UINT;
  4563.   end;
  4564.   PNMItemActivate = ^TNMItemActivate;
  4565.   TNMItemActivate = tagNMITEMACTIVATE;
  4566.  
  4567. const
  4568.   // key flags stored in uKeyFlags
  4569.   {$EXTERNALSYM LVKF_ALT}
  4570.   LVKF_ALT       = $0001;
  4571.   {$EXTERNALSYM LVKF_CONTROL}
  4572.   LVKF_CONTROL   = $0002;
  4573.   {$EXTERNALSYM LVKF_SHIFT}
  4574.   LVKF_SHIFT     = $0004;
  4575.  
  4576. type
  4577.   {$EXTERNALSYM tagNMLVCUSTOMDRAW}
  4578.   tagNMLVCUSTOMDRAW = packed record
  4579.     nmcd: TNMCustomDraw;
  4580.     clrText: COLORREF;
  4581.     clrTextBk: COLORREF;
  4582.     iSubItem: Integer;
  4583.   end;
  4584.   PNMLVCustomDraw = ^TNMLVCustomDraw;
  4585.   TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
  4586.  
  4587.   {$EXTERNALSYM tagNMLVCACHEHINT}
  4588.   tagNMLVCACHEHINT = packed record
  4589.     hdr: TNMHDR;
  4590.     iFrom: Integer;
  4591.     iTo: Integer;
  4592.   end;
  4593.   PNMLVCacheHint = ^TNMLVCacheHint;
  4594.   TNMLVCacheHint = tagNMLVCACHEHINT;
  4595.   PNMCacheHint = ^TNMCacheHint;
  4596.   TNMCacheHint = tagNMLVCACHEHINT;
  4597.  
  4598.   {$EXTERNALSYM tagNMLVFINDITEM}
  4599.   tagNMLVFINDITEM = packed record
  4600.     hdr: TNMHdr;
  4601.     iStart: Integer;
  4602.     lvfi: TLVFindInfo;
  4603.   end;
  4604.   PNMLVFinditem = ^TNMLVFinditem;
  4605.   TNMLVFinditem = tagNMLVFINDITEM;
  4606.   PNMFinditem = ^TNMFinditem;
  4607.   TNMFinditem = tagNMLVFINDITEM;
  4608.  
  4609.   {$EXTERNALSYM tagNMLVODSTATECHANGE}
  4610.   tagNMLVODSTATECHANGE = packed record
  4611.     hdr: TNMHdr;
  4612.     iFrom: Integer;
  4613.     iTo: Integer;
  4614.     uNewState: UINT;
  4615.     uOldState: UINT;
  4616.   end;
  4617.   PNMLVODStateChange = ^TNMLVODStateChange;
  4618.   TNMLVODStateChange = tagNMLVODSTATECHANGE;
  4619.  
  4620. const
  4621.   {$EXTERNALSYM LVN_ITEMCHANGING}
  4622.   LVN_ITEMCHANGING        = LVN_FIRST-0;
  4623.   {$EXTERNALSYM LVN_ITEMCHANGED}
  4624.   LVN_ITEMCHANGED         = LVN_FIRST-1;
  4625.   {$EXTERNALSYM LVN_INSERTITEM}
  4626.   LVN_INSERTITEM          = LVN_FIRST-2;
  4627.   {$EXTERNALSYM LVN_DELETEITEM}
  4628.   LVN_DELETEITEM          = LVN_FIRST-3;
  4629.   {$EXTERNALSYM LVN_DELETEALLITEMS}
  4630.   LVN_DELETEALLITEMS      = LVN_FIRST-4;
  4631.   {$EXTERNALSYM LVN_COLUMNCLICK}
  4632.   LVN_COLUMNCLICK         = LVN_FIRST-8;
  4633.   {$EXTERNALSYM LVN_BEGINDRAG}
  4634.   LVN_BEGINDRAG           = LVN_FIRST-9;
  4635.   {$EXTERNALSYM LVN_BEGINRDRAG}
  4636.   LVN_BEGINRDRAG          = LVN_FIRST-11;
  4637.  
  4638.   {$EXTERNALSYM LVN_ODCACHEHINT}
  4639.   LVN_ODCACHEHINT         = LVN_FIRST-13;
  4640.   {$EXTERNALSYM LVN_ODFINDITEMA}
  4641.   LVN_ODFINDITEMA         = LVN_FIRST-52;
  4642.   {$EXTERNALSYM LVN_ODFINDITEMW}
  4643.   LVN_ODFINDITEMW         = LVN_FIRST-79;
  4644.  
  4645.   {$EXTERNALSYM LVN_ITEMACTIVATE}
  4646.   LVN_ITEMACTIVATE        = LVN_FIRST-14;
  4647.   {$EXTERNALSYM LVN_ODSTATECHANGED}
  4648.   LVN_ODSTATECHANGED      = LVN_FIRST-15;
  4649.  
  4650. {$IFDEF UNICODE}
  4651.   {$EXTERNALSYM LVN_ODFINDITEM}
  4652.   LVN_ODFINDITEM          = LVN_ODFINDITEMW; 
  4653. {$ELSE}
  4654.   {$EXTERNALSYM LVN_ODFINDITEM}
  4655.   LVN_ODFINDITEM          = LVN_ODFINDITEMA; 
  4656. {$ENDIF}
  4657.  
  4658.   {$EXTERNALSYM LVN_BEGINLABELEDITA}
  4659.   LVN_BEGINLABELEDITA      = LVN_FIRST-5;
  4660.   {$EXTERNALSYM LVN_ENDLABELEDITA}
  4661.   LVN_ENDLABELEDITA        = LVN_FIRST-6;
  4662.   {$EXTERNALSYM LVN_BEGINLABELEDITW}
  4663.   LVN_BEGINLABELEDITW      = LVN_FIRST-75;
  4664.   {$EXTERNALSYM LVN_ENDLABELEDITW}
  4665.   LVN_ENDLABELEDITW        = LVN_FIRST-76;
  4666. {$IFDEF UNICODE}
  4667.   {$EXTERNALSYM LVN_BEGINLABELEDIT}
  4668.   LVN_BEGINLABELEDIT      = LVN_BEGINLABELEDITW;
  4669.   {$EXTERNALSYM LVN_ENDLABELEDIT}
  4670.   LVN_ENDLABELEDIT        = LVN_ENDLABELEDITW;
  4671. {$ELSE}
  4672.   {$EXTERNALSYM LVN_BEGINLABELEDIT}
  4673.   LVN_BEGINLABELEDIT      = LVN_BEGINLABELEDITA;
  4674.   {$EXTERNALSYM LVN_ENDLABELEDIT}
  4675.   LVN_ENDLABELEDIT        = LVN_ENDLABELEDITA;
  4676. {$ENDIF}
  4677.  
  4678.   {$EXTERNALSYM LVN_HOTTRACK}
  4679.   LVN_HOTTRACK            = LVN_FIRST-21;
  4680.   
  4681.   {$EXTERNALSYM LVN_GETDISPINFOA}
  4682.   LVN_GETDISPINFOA        = LVN_FIRST-50;
  4683.   {$EXTERNALSYM LVN_SETDISPINFOA}
  4684.   LVN_SETDISPINFOA        = LVN_FIRST-51;
  4685.   {$EXTERNALSYM LVN_GETDISPINFOW}
  4686.   LVN_GETDISPINFOW        = LVN_FIRST-77;
  4687.   {$EXTERNALSYM LVN_SETDISPINFOW}
  4688.   LVN_SETDISPINFOW        = LVN_FIRST-78;
  4689. {$IFDEF UNICODE}
  4690.   {$EXTERNALSYM LVN_GETDISPINFO}
  4691.   LVN_GETDISPINFO        = LVN_GETDISPINFOW;
  4692.   {$EXTERNALSYM LVN_SETDISPINFO}
  4693.   LVN_SETDISPINFO        = LVN_SETDISPINFOW;
  4694. {$ELSE}
  4695.   {$EXTERNALSYM LVN_GETDISPINFO}
  4696.   LVN_GETDISPINFO        = LVN_GETDISPINFOA;
  4697.   {$EXTERNALSYM LVN_SETDISPINFO}
  4698.   LVN_SETDISPINFO        = LVN_SETDISPINFOA;
  4699. {$ENDIF}
  4700.  
  4701.   {$EXTERNALSYM LVIF_DI_SETITEM}
  4702.   LVIF_DI_SETITEM         = $1000;
  4703.  
  4704. type
  4705.   PLVDispInfoA = ^TLVDispInfoA;
  4706.   PLVDispInfoW = ^TLVDispInfoW;
  4707.   PLVDispInfo = PLVDispInfoA;
  4708.   {$EXTERNALSYM tagLVDISPINFO}
  4709.   tagLVDISPINFO = packed record
  4710.     hdr: TNMHDR;
  4711.     item: TLVItemA;
  4712.   end;
  4713.   {$EXTERNALSYM _LV_DISPINFO}
  4714.   _LV_DISPINFO = tagLVDISPINFO;
  4715.   {$EXTERNALSYM tagLVDISPINFOW}
  4716.   tagLVDISPINFOW = packed record
  4717.     hdr: TNMHDR;
  4718.     item: TLVItemW;
  4719.   end;
  4720.   {$EXTERNALSYM _LV_DISPINFOW}
  4721.   _LV_DISPINFOW = tagLVDISPINFOW;
  4722.   TLVDispInfoA = tagLVDISPINFO;
  4723.   TLVDispInfoW = tagLVDISPINFOW;
  4724.   TLVDispInfo = TLVDispInfoA;
  4725.   {$EXTERNALSYM LV_DISPINFOA}
  4726.   LV_DISPINFOA = tagLVDISPINFO;
  4727.   {$EXTERNALSYM LV_DISPINFOW}
  4728.   LV_DISPINFOW = tagLVDISPINFOW;
  4729.   {$EXTERNALSYM LV_DISPINFO}
  4730.   LV_DISPINFO = LV_DISPINFOA;
  4731.  
  4732. const
  4733.   {$EXTERNALSYM LVN_KEYDOWN}
  4734.   LVN_KEYDOWN             = LVN_FIRST-55;
  4735.  
  4736. type
  4737.   PLVKeyDown = ^TLVKeyDown;
  4738.   {$EXTERNALSYM tagLVKEYDOWN}
  4739.   tagLVKEYDOWN = packed record
  4740.     hdr: TNMHDR;
  4741.     wVKey: Word;
  4742.     flags: UINT;
  4743.   end;
  4744.   {$EXTERNALSYM _LV_KEYDOWN}
  4745.   _LV_KEYDOWN = tagLVKEYDOWN;
  4746.   TLVKeyDown = tagLVKEYDOWN;
  4747.   {$EXTERNALSYM LV_KEYDOWN}
  4748.   LV_KEYDOWN = tagLVKEYDOWN;
  4749.  
  4750. const
  4751.   {$EXTERNALSYM LVN_MARQUEEBEGIN}
  4752.   LVN_MARQUEEBEGIN        = LVN_FIRST-56;
  4753.  
  4754. type
  4755.   {$EXTERNALSYM tagNMLVGETINFOTIPA}
  4756.   tagNMLVGETINFOTIPA = packed record
  4757.     hdr: TNMHdr;
  4758.     dwFlags: DWORD;
  4759.     pszText: PAnsiChar;
  4760.     cchTextMax: Integer;
  4761.     iItem: Integer;
  4762.     iSubItem: Integer;
  4763.     lParam: LPARAM;
  4764.   end;
  4765.   {$EXTERNALSYM tagNMLVGETINFOTIPW}
  4766.   tagNMLVGETINFOTIPW = packed record
  4767.     hdr: TNMHdr;
  4768.     dwFlags: DWORD;
  4769.     pszText: PWideChar;
  4770.     cchTextMax: Integer;
  4771.     iItem: Integer;
  4772.     iSubItem: Integer;
  4773.     lParam: LPARAM;
  4774.   end;
  4775.   {$EXTERNALSYM tagNMLVGETINFOTIP}
  4776.   tagNMLVGETINFOTIP = tagNMLVGETINFOTIPA;
  4777.   PNMLVGetInfoTipA = ^TNMLVGetInfoTipA;
  4778.   PNMLVGetInfoTipW = ^TNMLVGetInfoTipW;
  4779.   PNMLVGetInfoTip = PNMLVGetInfoTipA;
  4780.   TNMLVGetInfoTipA = tagNMLVGETINFOTIPA;
  4781.   TNMLVGetInfoTipW = tagNMLVGETINFOTIPW;
  4782.   TNMLVGetInfoTip = TNMLVGetInfoTipA;
  4783.  
  4784. const
  4785.   // NMLVGETINFOTIPA.dwFlag values
  4786.   {$EXTERNALSYM LVGIT_UNFOLDED}
  4787.   LVGIT_UNFOLDED  = $0001;
  4788.  
  4789.   {$EXTERNALSYM LVN_GETINFOTIPA}
  4790.   LVN_GETINFOTIPA          = LVN_FIRST-57;
  4791.   {$EXTERNALSYM LVN_GETINFOTIPW}
  4792.   LVN_GETINFOTIPW          = LVN_FIRST-58;
  4793.  
  4794. {$IFDEF UNICODE}
  4795.   {$EXTERNALSYM LVN_GETINFOTIP}
  4796.   LVN_GETINFOTIP          = LVN_GETINFOTIPW;
  4797. {$ELSE}
  4798.   {$EXTERNALSYM LVN_GETINFOTIP}
  4799.   LVN_GETINFOTIP          = LVN_GETINFOTIPA;
  4800. {$ENDIF}
  4801.  
  4802. { ====== TREEVIEW CONTROL =================== }
  4803.  
  4804. const
  4805.   {$EXTERNALSYM WC_TREEVIEW}
  4806.   WC_TREEVIEW = 'SysTreeView32';
  4807.  
  4808. const
  4809.   {$EXTERNALSYM TVS_HASBUTTONS}
  4810.   TVS_HASBUTTONS          = $0001;
  4811.   {$EXTERNALSYM TVS_HASLINES}
  4812.   TVS_HASLINES            = $0002;
  4813.   {$EXTERNALSYM TVS_LINESATROOT}
  4814.   TVS_LINESATROOT         = $0004;
  4815.   {$EXTERNALSYM TVS_EDITLABELS}
  4816.   TVS_EDITLABELS          = $0008;
  4817.   {$EXTERNALSYM TVS_DISABLEDRAGDROP}
  4818.   TVS_DISABLEDRAGDROP     = $0010;
  4819.   {$EXTERNALSYM TVS_SHOWSELALWAYS}
  4820.   TVS_SHOWSELALWAYS       = $0020;
  4821.   {$EXTERNALSYM TVS_RTLREADING}
  4822.   TVS_RTLREADING          = $0040;
  4823.   {$EXTERNALSYM TVS_NOTOOLTIPS}
  4824.   TVS_NOTOOLTIPS          = $0080;
  4825.   {$EXTERNALSYM TVS_CHECKBOXES}
  4826.   TVS_CHECKBOXES          = $0100;
  4827.   {$EXTERNALSYM TVS_TRACKSELECT}
  4828.   TVS_TRACKSELECT         = $0200;
  4829.   {$EXTERNALSYM TVS_SINGLEEXPAND}
  4830.   TVS_SINGLEEXPAND        = $0400;
  4831.   {$EXTERNALSYM TVS_INFOTIP}
  4832.   TVS_INFOTIP             = $0800;
  4833.   {$EXTERNALSYM TVS_FULLROWSELECT}
  4834.   TVS_FULLROWSELECT       = $1000;
  4835.   {$EXTERNALSYM TVS_NOSCROLL}
  4836.   TVS_NOSCROLL            = $2000;
  4837.   {$EXTERNALSYM TVS_NONEVENHEIGHT}
  4838.   TVS_NONEVENHEIGHT       = $4000;
  4839.  
  4840. type
  4841.   {$EXTERNALSYM HTREEITEM}
  4842.   HTREEITEM = ^_TREEITEM;
  4843.   {$EXTERNALSYM _TREEITEM}
  4844.   _TREEITEM = packed record
  4845.   end;
  4846.  
  4847. const
  4848.   {$EXTERNALSYM TVIF_TEXT}
  4849.   TVIF_TEXT               = $0001;
  4850.   {$EXTERNALSYM TVIF_IMAGE}
  4851.   TVIF_IMAGE              = $0002;
  4852.   {$EXTERNALSYM TVIF_PARAM}
  4853.   TVIF_PARAM              = $0004;
  4854.   {$EXTERNALSYM TVIF_STATE}
  4855.   TVIF_STATE              = $0008;
  4856.   {$EXTERNALSYM TVIF_HANDLE}
  4857.   TVIF_HANDLE             = $0010;
  4858.   {$EXTERNALSYM TVIF_SELECTEDIMAGE}
  4859.   TVIF_SELECTEDIMAGE      = $0020;
  4860.   {$EXTERNALSYM TVIF_CHILDREN}
  4861.   TVIF_CHILDREN           = $0040;
  4862.   {$EXTERNALSYM TVIF_INTEGRAL}
  4863.   TVIF_INTEGRAL           = $0080;
  4864.  
  4865.   {$EXTERNALSYM TVIS_FOCUSED}
  4866.   TVIS_FOCUSED            = $0001;
  4867.   {$EXTERNALSYM TVIS_SELECTED}
  4868.   TVIS_SELECTED           = $0002;
  4869.   {$EXTERNALSYM TVIS_CUT}
  4870.   TVIS_CUT                = $0004;
  4871.   {$EXTERNALSYM TVIS_DROPHILITED}
  4872.   TVIS_DROPHILITED        = $0008;
  4873.   {$EXTERNALSYM TVIS_BOLD}
  4874.   TVIS_BOLD               = $0010;
  4875.   {$EXTERNALSYM TVIS_EXPANDED}
  4876.   TVIS_EXPANDED           = $0020;
  4877.   {$EXTERNALSYM TVIS_EXPANDEDONCE}
  4878.   TVIS_EXPANDEDONCE       = $0040;
  4879.   {$EXTERNALSYM TVIS_EXPANDPARTIAL}
  4880.   TVIS_EXPANDPARTIAL      = $0080;
  4881.  
  4882.   {$EXTERNALSYM TVIS_OVERLAYMASK}
  4883.   TVIS_OVERLAYMASK        = $0F00;
  4884.   {$EXTERNALSYM TVIS_STATEIMAGEMASK}
  4885.   TVIS_STATEIMAGEMASK     = $F000;
  4886.   {$EXTERNALSYM TVIS_USERMASK}
  4887.   TVIS_USERMASK           = $F000;
  4888.  
  4889.  
  4890. const
  4891.   {$EXTERNALSYM I_CHILDRENCALLBACK}
  4892.   I_CHILDRENCALLBACK  = -1;
  4893.  
  4894. type
  4895.   PTVItemA = ^TTVItemA;
  4896.   PTVItemW = ^TTVItemW;
  4897.   PTVItem = PTVItemA;
  4898.   {$EXTERNALSYM tagTVITEMA}
  4899.   tagTVITEMA = packed record
  4900.     mask: UINT;
  4901.     hItem: HTreeItem;
  4902.     state: UINT;
  4903.     stateMask: UINT;
  4904.     pszText: PAnsiChar;
  4905.     cchTextMax: Integer;
  4906.     iImage: Integer;
  4907.     iSelectedImage: Integer;
  4908.     cChildren: Integer;
  4909.     lParam: LPARAM;
  4910.   end;
  4911.   {$EXTERNALSYM tagTVITEMW}
  4912.   tagTVITEMW = packed record
  4913.     mask: UINT;
  4914.     hItem: HTreeItem;
  4915.     state: UINT;
  4916.     stateMask: UINT;
  4917.     pszText: PWideChar;
  4918.     cchTextMax: Integer;
  4919.     iImage: Integer;
  4920.     iSelectedImage: Integer;
  4921.     cChildren: Integer;
  4922.     lParam: LPARAM;
  4923.   end;
  4924.   {$EXTERNALSYM tagTVITEM}
  4925.   tagTVITEM = tagTVITEMA;
  4926.   {$EXTERNALSYM _TV_ITEMA}
  4927.   _TV_ITEMA = tagTVITEMA;
  4928.   {$EXTERNALSYM _TV_ITEMW}
  4929.   _TV_ITEMW = tagTVITEMW;
  4930.   {$EXTERNALSYM _TV_ITEM}
  4931.   _TV_ITEM = _TV_ITEMA;
  4932.   TTVItemA = tagTVITEMA;
  4933.   TTVItemW = tagTVITEMW;
  4934.   TTVItem = TTVItemA;
  4935.   {$EXTERNALSYM TV_ITEMA}
  4936.   TV_ITEMA = tagTVITEMA;
  4937.   {$EXTERNALSYM TV_ITEMW}
  4938.   TV_ITEMW = tagTVITEMW;
  4939.   {$EXTERNALSYM TV_ITEM}
  4940.   TV_ITEM = TV_ITEMA;
  4941.  
  4942.   // only used for Get and Set messages.  no notifies
  4943.   {$EXTERNALSYM tagTVITEMEXA}
  4944.   tagTVITEMEXA = packed record
  4945.     mask: UINT;
  4946.     hItem: HTREEITEM;
  4947.     state: UINT;
  4948.     stateMask: UINT;
  4949.     pszText: PAnsiChar;
  4950.     cchTextMax: Integer;
  4951.     iImage: Integer;
  4952.     iSelectedImage: Integer;
  4953.     cChildren: Integer;
  4954.     lParam: LPARAM;
  4955.     iIntegral: Integer;
  4956.   end;
  4957.   {$EXTERNALSYM tagTVITEMEXW}
  4958.   tagTVITEMEXW = packed record
  4959.     mask: UINT;
  4960.     hItem: HTREEITEM;
  4961.     state: UINT;
  4962.     stateMask: UINT;
  4963.     pszText: PWideChar;
  4964.     cchTextMax: Integer;
  4965.     iImage: Integer;
  4966.     iSelectedImage: Integer;
  4967.     cChildren: Integer;
  4968.     lParam: LPARAM;
  4969.     iIntegral: Integer;
  4970.   end;
  4971.   {$EXTERNALSYM tagTVITEMEX}
  4972.   tagTVITEMEX = tagTVITEMEXA;
  4973.   PTVItemExA = ^TTVItemExA;
  4974.   PTVItemExW = ^TTVItemExW;
  4975.   PTVItemEx = PTVItemExA;
  4976.   TTVItemExA = tagTVITEMEXA;
  4977.   TTVItemExW = tagTVITEMEXW;
  4978.   TTVItemEx = TTVItemExA;
  4979.  
  4980. const
  4981.   {$EXTERNALSYM TVI_ROOT}
  4982.   TVI_ROOT                = HTreeItem($FFFF0000);
  4983.   {$EXTERNALSYM TVI_FIRST}
  4984.   TVI_FIRST               = HTreeItem($FFFF0001);
  4985.   {$EXTERNALSYM TVI_LAST}
  4986.   TVI_LAST                = HTreeItem($FFFF0002);
  4987.   {$EXTERNALSYM TVI_SORT}
  4988.   TVI_SORT                = HTreeItem($FFFF0003);
  4989.  
  4990. type
  4991.   PTVInsertStructA = ^TTVInsertStructA;
  4992.   PTVInsertStructW = ^TTVInsertStructW;
  4993.   PTVInsertStruct = PTVInsertStructA;
  4994.   {$EXTERNALSYM tagTVINSERTSTRUCTA}
  4995.   tagTVINSERTSTRUCTA = packed record
  4996.     hParent: HTreeItem;
  4997.     hInsertAfter: HTreeItem;
  4998.     case Integer of
  4999.       0: (itemex: TTVItemExA);
  5000.       1: (item: TTVItemA);
  5001.   end;
  5002.   {$EXTERNALSYM tagTVINSERTSTRUCTW}
  5003.   tagTVINSERTSTRUCTW = packed record
  5004.     hParent: HTreeItem;
  5005.     hInsertAfter: HTreeItem;
  5006.     case Integer of
  5007.       0: (itemex: TTVItemExW);
  5008.       1: (item: TTVItemW);
  5009.   end;
  5010.   {$EXTERNALSYM tagTVINSERTSTRUCT}
  5011.   tagTVINSERTSTRUCT = tagTVINSERTSTRUCTA;
  5012.   {$EXTERNALSYM _TV_INSERTSTRUCTA}
  5013.   _TV_INSERTSTRUCTA = tagTVINSERTSTRUCTA;
  5014.   {$EXTERNALSYM _TV_INSERTSTRUCTW}
  5015.   _TV_INSERTSTRUCTW = tagTVINSERTSTRUCTW;
  5016.   {$EXTERNALSYM _TV_INSERTSTRUCT}
  5017.   _TV_INSERTSTRUCT = _TV_INSERTSTRUCTA;
  5018.   TTVInsertStructA = tagTVINSERTSTRUCTA;
  5019.   TTVInsertStructW = tagTVINSERTSTRUCTW;
  5020.   TTVInsertStruct = TTVInsertStructA;
  5021.   {$EXTERNALSYM TV_INSERTSTRUCTA}
  5022.   TV_INSERTSTRUCTA = tagTVINSERTSTRUCTA;
  5023.   {$EXTERNALSYM TV_INSERTSTRUCTW}
  5024.   TV_INSERTSTRUCTW = tagTVINSERTSTRUCTW;
  5025.   {$EXTERNALSYM TV_INSERTSTRUCT}
  5026.   TV_INSERTSTRUCT = TV_INSERTSTRUCTA;
  5027.  
  5028. const
  5029.   {$EXTERNALSYM TVM_INSERTITEMA}
  5030.   TVM_INSERTITEMA          = TV_FIRST + 0;
  5031.   {$EXTERNALSYM TVM_INSERTITEMW}
  5032.   TVM_INSERTITEMW          = TV_FIRST + 50;
  5033. {$IFDEF UNICODE}
  5034.   {$EXTERNALSYM TVM_INSERTITEM}
  5035.   TVM_INSERTITEM          = TVM_INSERTITEMW;
  5036. {$ELSE}
  5037.   {$EXTERNALSYM TVM_INSERTITEM}
  5038.   TVM_INSERTITEM          = TVM_INSERTITEMA;
  5039. {$ENDIF}
  5040.  
  5041. {$EXTERNALSYM TreeView_InsertItem}
  5042. function TreeView_InsertItem(hwnd: HWND; const lpis: TTVInsertStruct): HTreeItem;
  5043.  
  5044. const
  5045.   {$EXTERNALSYM TVM_DELETEITEM}
  5046.   TVM_DELETEITEM          = TV_FIRST + 1;
  5047.  
  5048. {$EXTERNALSYM TreeView_DeleteItem}
  5049. function TreeView_DeleteItem(hwnd: HWND; hitem: HTreeItem): Bool;
  5050.  
  5051. {$EXTERNALSYM TreeView_DeleteAllItems}
  5052. function TreeView_DeleteAllItems(hwnd: HWND): Bool;
  5053.  
  5054. const
  5055.   {$EXTERNALSYM TVM_EXPAND}
  5056.   TVM_EXPAND              = TV_FIRST + 2;
  5057.  
  5058. {$EXTERNALSYM TreeView_Expand}
  5059. function TreeView_Expand(hwnd: HWND; hitem: HTreeItem; code: Integer): Bool;
  5060.  
  5061. const
  5062.   {$EXTERNALSYM TVE_COLLAPSE}
  5063.   TVE_COLLAPSE            = $0001;
  5064.   {$EXTERNALSYM TVE_EXPAND}
  5065.   TVE_EXPAND              = $0002;
  5066.   {$EXTERNALSYM TVE_TOGGLE}
  5067.   TVE_TOGGLE              = $0003;
  5068.   {$EXTERNALSYM TVE_EXPANDPARTIAL}
  5069.   TVE_EXPANDPARTIAL       = $4000;
  5070.   {$EXTERNALSYM TVE_COLLAPSERESET}
  5071.   TVE_COLLAPSERESET       = $8000;
  5072.  
  5073. const
  5074.   {$EXTERNALSYM TVM_GETITEMRECT}
  5075.   TVM_GETITEMRECT         = TV_FIRST + 4;
  5076.  
  5077. {$EXTERNALSYM TreeView_GetItemRect}
  5078. function TreeView_GetItemRect(hwnd: HWND; hitem: HTreeItem;
  5079.   var prc: TRect; code: Bool): Bool;
  5080.  
  5081. const
  5082.   {$EXTERNALSYM TVM_GETCOUNT}
  5083.   TVM_GETCOUNT            = TV_FIRST + 5;
  5084.  
  5085. {$EXTERNALSYM TreeView_GetCount}
  5086. function TreeView_GetCount(hwnd: HWND): UINT;
  5087.  
  5088. const
  5089.   {$EXTERNALSYM TVM_GETINDENT}
  5090.   TVM_GETINDENT           = TV_FIRST + 6;
  5091.  
  5092. {$EXTERNALSYM TreeView_GetIndent}
  5093. function TreeView_GetIndent(hwnd: HWND): UINT;
  5094.  
  5095. const
  5096.   {$EXTERNALSYM TVM_SETINDENT}
  5097.   TVM_SETINDENT           = TV_FIRST + 7;
  5098.  
  5099. {$EXTERNALSYM TreeView_SetIndent}
  5100. function TreeView_SetIndent(hwnd: HWND; indent: Integer): Bool;
  5101.  
  5102. const
  5103.   {$EXTERNALSYM TVM_GETIMAGELIST}
  5104.   TVM_GETIMAGELIST        = TV_FIRST + 8;
  5105.  
  5106. {$EXTERNALSYM TreeView_GetImageList}
  5107. function TreeView_GetImageList(hwnd: HWND; iImage: Integer): HIMAGELIST;
  5108.  
  5109. const
  5110.   {$EXTERNALSYM TVSIL_NORMAL}
  5111.   TVSIL_NORMAL            = 0;
  5112.   {$EXTERNALSYM TVSIL_STATE}
  5113.   TVSIL_STATE             = 2;
  5114.  
  5115.  
  5116. const
  5117.   {$EXTERNALSYM TVM_SETIMAGELIST}
  5118.   TVM_SETIMAGELIST        = TV_FIRST + 9;
  5119.  
  5120. {$EXTERNALSYM TreeView_SetImageList}
  5121. function TreeView_SetImageList(hwnd: HWND; himl: HIMAGELIST;
  5122.   iImage: Integer): HIMAGELIST;
  5123.  
  5124. const
  5125.   {$EXTERNALSYM TVM_GETNEXTITEM}
  5126.   TVM_GETNEXTITEM         = TV_FIRST + 10;
  5127.  
  5128. {$EXTERNALSYM TreeView_GetNextItem}
  5129. function TreeView_GetNextItem(hwnd: HWND; hitem: HTreeItem;
  5130.   code: Integer): HTreeItem;
  5131.  
  5132. const
  5133.   {$EXTERNALSYM TVGN_ROOT}
  5134.   TVGN_ROOT               = $0000;
  5135.   {$EXTERNALSYM TVGN_NEXT}
  5136.   TVGN_NEXT               = $0001;
  5137.   {$EXTERNALSYM TVGN_PREVIOUS}
  5138.   TVGN_PREVIOUS           = $0002;
  5139.   {$EXTERNALSYM TVGN_PARENT}
  5140.   TVGN_PARENT             = $0003;
  5141.   {$EXTERNALSYM TVGN_CHILD}
  5142.   TVGN_CHILD              = $0004;
  5143.   {$EXTERNALSYM TVGN_FIRSTVISIBLE}
  5144.   TVGN_FIRSTVISIBLE       = $0005;
  5145.   {$EXTERNALSYM TVGN_NEXTVISIBLE}
  5146.   TVGN_NEXTVISIBLE        = $0006;
  5147.   {$EXTERNALSYM TVGN_PREVIOUSVISIBLE}
  5148.   TVGN_PREVIOUSVISIBLE    = $0007;
  5149.   {$EXTERNALSYM TVGN_DROPHILITE}
  5150.   TVGN_DROPHILITE         = $0008;
  5151.   {$EXTERNALSYM TVGN_CARET}
  5152.   TVGN_CARET              = $0009;
  5153.   {$EXTERNALSYM TVGN_LASTVISIBLE}
  5154.   TVGN_LASTVISIBLE        = $000A;
  5155.  
  5156. {$EXTERNALSYM TreeView_GetChild}
  5157. function TreeView_GetChild(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5158. {$EXTERNALSYM TreeView_GetNextSibling}
  5159. function TreeView_GetNextSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5160. {$EXTERNALSYM TreeView_GetPrevSibling}
  5161. function TreeView_GetPrevSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5162. {$EXTERNALSYM TreeView_GetParent}
  5163. function TreeView_GetParent(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5164. {$EXTERNALSYM TreeView_GetFirstVisible}
  5165. function TreeView_GetFirstVisible(hwnd: HWND): HTreeItem;
  5166. {$EXTERNALSYM TreeView_GetNextVisible}
  5167. function TreeView_GetNextVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5168. {$EXTERNALSYM TreeView_GetPrevVisible}
  5169. function TreeView_GetPrevVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5170. {$EXTERNALSYM TreeView_GetSelection}
  5171. function TreeView_GetSelection(hwnd: HWND): HTreeItem;
  5172. {$EXTERNALSYM TreeView_GetDropHilite}
  5173. function TreeView_GetDropHilite(hwnd: HWND): HTreeItem;
  5174. {$EXTERNALSYM TreeView_GetRoot}
  5175. function TreeView_GetRoot(hwnd: HWND): HTreeItem;
  5176. {$EXTERNALSYM TreeView_GetLastVisible}
  5177. function TreeView_GetLastVisible(hwnd: HWND): HTreeItem;
  5178.  
  5179. const
  5180.   {$EXTERNALSYM TVM_SELECTITEM}
  5181.   TVM_SELECTITEM          = TV_FIRST + 11;
  5182.  
  5183. {$EXTERNALSYM TreeView_Select}
  5184. function TreeView_Select(hwnd: HWND; hitem: HTreeItem;
  5185.   code: Integer): HTreeItem;
  5186.  
  5187. {$EXTERNALSYM TreeView_SelectItem}
  5188. function TreeView_SelectItem(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5189. {$EXTERNALSYM TreeView_SelectDropTarget}
  5190. function TreeView_SelectDropTarget(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5191. {$EXTERNALSYM TreeView_SelectSetFirstVisible}
  5192. function TreeView_SelectSetFirstVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  5193.  
  5194. const
  5195.   {$EXTERNALSYM TVM_GETITEMA}
  5196.   TVM_GETITEMA             = TV_FIRST + 12;
  5197.   {$EXTERNALSYM TVM_GETITEMW}
  5198.   TVM_GETITEMW             = TV_FIRST + 62;
  5199. {$IFDEF UNICODE}
  5200.   {$EXTERNALSYM TVM_GETITEM}
  5201.   TVM_GETITEM             = TVM_GETITEMW;
  5202. {$ELSE}
  5203.   {$EXTERNALSYM TVM_GETITEM}
  5204.   TVM_GETITEM             = TVM_GETITEMA;
  5205. {$ENDIF}
  5206.  
  5207. {$EXTERNALSYM TreeView_GetItemA}
  5208. function TreeView_GetItemA(hwnd: HWND; var pitem: TTVItemA): Bool;
  5209. {$EXTERNALSYM TreeView_GetItemW}
  5210. function TreeView_GetItemW(hwnd: HWND; var pitem: TTVItemW): Bool;
  5211. {$EXTERNALSYM TreeView_GetItem}
  5212. function TreeView_GetItem(hwnd: HWND; var pitem: TTVItem): Bool;
  5213.  
  5214. const
  5215.   {$EXTERNALSYM TVM_SETITEMA}
  5216.   TVM_SETITEMA             = TV_FIRST + 13;
  5217.   {$EXTERNALSYM TVM_SETITEMW}
  5218.   TVM_SETITEMW             = TV_FIRST + 63;
  5219. {$IFDEF UNICODE}
  5220.   {$EXTERNALSYM TVM_SETITEM}
  5221.   TVM_SETITEM             = TVM_SETITEMW;
  5222. {$ELSE}
  5223.   {$EXTERNALSYM TVM_SETITEM}
  5224.   TVM_SETITEM             = TVM_SETITEMA;
  5225. {$ENDIF}
  5226.  
  5227. {$EXTERNALSYM TreeView_SetItemA}
  5228. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemA): Bool;
  5229. {$EXTERNALSYM TreeView_SetItemW}
  5230. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemW): Bool;
  5231. {$EXTERNALSYM TreeView_SetItem}
  5232. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItem): Bool;
  5233.  
  5234. const
  5235.   {$EXTERNALSYM TVM_EDITLABELA}
  5236.   TVM_EDITLABELA           = TV_FIRST + 14;
  5237.   {$EXTERNALSYM TVM_EDITLABELW}
  5238.   TVM_EDITLABELW           = TV_FIRST + 65;
  5239. {$IFDEF UNICODE}
  5240.   {$EXTERNALSYM TVM_EDITLABEL}
  5241.   TVM_EDITLABEL           = TVM_EDITLABELW;
  5242. {$ELSE}
  5243.   {$EXTERNALSYM TVM_EDITLABEL}
  5244.   TVM_EDITLABEL           = TVM_EDITLABELA;
  5245. {$ENDIF}
  5246.  
  5247. {$EXTERNALSYM TreeView_EditLabelA}
  5248. function TreeView_EditLabelA(hwnd: HWND; hitem: HTreeItem): HWND;
  5249. {$EXTERNALSYM TreeView_EditLabelW}
  5250. function TreeView_EditLabelW(hwnd: HWND; hitem: HTreeItem): HWND;
  5251. {$EXTERNALSYM TreeView_EditLabel}
  5252. function TreeView_EditLabel(hwnd: HWND; hitem: HTreeItem): HWND;
  5253.  
  5254. const
  5255.   {$EXTERNALSYM TVM_GETEDITCONTROL}
  5256.   TVM_GETEDITCONTROL      = TV_FIRST + 15;
  5257.  
  5258. {$EXTERNALSYM TreeView_GetEditControl}
  5259. function TreeView_GetEditControl(hwnd: HWND): HWND;
  5260.  
  5261.  
  5262. const
  5263.   {$EXTERNALSYM TVM_GETVISIBLECOUNT}
  5264.   TVM_GETVISIBLECOUNT     = TV_FIRST + 16;
  5265.  
  5266. {$EXTERNALSYM TreeView_GetVisibleCount}
  5267. function TreeView_GetVisibleCount(hwnd: HWND): UINT;
  5268.  
  5269. const
  5270.   {$EXTERNALSYM TVM_HITTEST}
  5271.   TVM_HITTEST             = TV_FIRST + 17;
  5272.  
  5273. type
  5274.   PTVHitTestInfo = ^TTVHitTestInfo;
  5275.   {$EXTERNALSYM tagTVHITTESTINFO}
  5276.   tagTVHITTESTINFO = packed record
  5277.     pt: TPoint;
  5278.     flags: UINT;
  5279.     hItem: HTreeItem;
  5280.   end;
  5281.   {$EXTERNALSYM _TV_HITTESTINFO}
  5282.   _TV_HITTESTINFO = tagTVHITTESTINFO;
  5283.   TTVHitTestInfo = tagTVHITTESTINFO;
  5284.   {$EXTERNALSYM TV_HITTESTINFO}
  5285.   TV_HITTESTINFO = tagTVHITTESTINFO;
  5286.  
  5287. {$EXTERNALSYM TreeView_HitTest}
  5288. function TreeView_HitTest(hwnd: HWND; var lpht: TTVHitTestInfo): HTreeItem;
  5289.  
  5290. const
  5291.   {$EXTERNALSYM TVHT_NOWHERE}
  5292.   TVHT_NOWHERE            = $0001;
  5293.   {$EXTERNALSYM TVHT_ONITEMICON}
  5294.   TVHT_ONITEMICON         = $0002;
  5295.   {$EXTERNALSYM TVHT_ONITEMLABEL}
  5296.   TVHT_ONITEMLABEL        = $0004;
  5297.   {$EXTERNALSYM TVHT_ONITEMINDENT}
  5298.   TVHT_ONITEMINDENT       = $0008;
  5299.   {$EXTERNALSYM TVHT_ONITEMBUTTON}
  5300.   TVHT_ONITEMBUTTON       = $0010;
  5301.   {$EXTERNALSYM TVHT_ONITEMRIGHT}
  5302.   TVHT_ONITEMRIGHT        = $0020;
  5303.   {$EXTERNALSYM TVHT_ONITEMSTATEICON}
  5304.   TVHT_ONITEMSTATEICON    = $0040;
  5305.  
  5306.   {$EXTERNALSYM TVHT_ONITEM}
  5307.   TVHT_ONITEM             = TVHT_ONITEMICON or TVHT_ONITEMLABEL or
  5308.                   TVHT_ONITEMSTATEICON;
  5309.  
  5310.   {$EXTERNALSYM TVHT_ABOVE}
  5311.   TVHT_ABOVE              = $0100;
  5312.   {$EXTERNALSYM TVHT_BELOW}
  5313.   TVHT_BELOW              = $0200;
  5314.   {$EXTERNALSYM TVHT_TORIGHT}
  5315.   TVHT_TORIGHT            = $0400;
  5316.   {$EXTERNALSYM TVHT_TOLEFT}
  5317.   TVHT_TOLEFT             = $0800;
  5318.  
  5319. const
  5320.   {$EXTERNALSYM TVM_CREATEDRAGIMAGE}
  5321.   TVM_CREATEDRAGIMAGE     = TV_FIRST + 18;
  5322.  
  5323. {$EXTERNALSYM TreeView_CreateDragImage}
  5324. function TreeView_CreateDragImage(hwnd: HWND; hitem: HTreeItem): HIMAGELIST;
  5325.  
  5326. const
  5327.   {$EXTERNALSYM TVM_SORTCHILDREN}
  5328.   TVM_SORTCHILDREN        = TV_FIRST + 19;
  5329.  
  5330. {$EXTERNALSYM TreeView_SortChildren}
  5331. function TreeView_SortChildren(hwnd: HWND; hitem: HTreeItem;
  5332.   recurse: Integer): Bool;
  5333.  
  5334. const
  5335.   {$EXTERNALSYM TVM_ENSUREVISIBLE}
  5336.   TVM_ENSUREVISIBLE       = TV_FIRST + 20;
  5337.  
  5338. {$EXTERNALSYM TreeView_EnsureVisible}
  5339. function TreeView_EnsureVisible(hwnd: HWND; hitem: HTreeItem): Bool;
  5340.  
  5341. const
  5342.   {$EXTERNALSYM TVM_SORTCHILDRENCB}
  5343.   TVM_SORTCHILDRENCB      = TV_FIRST + 21;
  5344.  
  5345. type
  5346.   {$EXTERNALSYM PFNTVCOMPARE}
  5347.   PFNTVCOMPARE = function(lParam1, lParam2, lParamSort: Longint): Integer stdcall;
  5348.   TTVCompare = PFNTVCOMPARE;
  5349.  
  5350. type
  5351.   {$EXTERNALSYM tagTVSORTCB}
  5352.   tagTVSORTCB = packed record
  5353.     hParent: HTreeItem;
  5354.     lpfnCompare: TTVCompare;
  5355.     lParam: LPARAM;
  5356.   end;
  5357.   {$EXTERNALSYM _TV_SORTCB}
  5358.   _TV_SORTCB = tagTVSORTCB;
  5359.   TTVSortCB = tagTVSORTCB;
  5360.   {$EXTERNALSYM TV_SORTCB}
  5361.   TV_SORTCB = tagTVSORTCB;
  5362.  
  5363. {$EXTERNALSYM TreeView_SortChildrenCB}
  5364. function TreeView_SortChildrenCB(hwnd: HWND; const psort: TTVSortCB;
  5365.   recurse: Integer): Bool;
  5366.  
  5367. const
  5368.   {$EXTERNALSYM TVM_ENDEDITLABELNOW}
  5369.   TVM_ENDEDITLABELNOW     = TV_FIRST + 22;
  5370.  
  5371. {$EXTERNALSYM TreeView_EndEditLabelNow}
  5372. function TreeView_EndEditLabelNow(hwnd: HWND; fCancel: Bool): Bool;
  5373.  
  5374. const
  5375.   {$EXTERNALSYM TVM_GETISEARCHSTRINGA}
  5376.   TVM_GETISEARCHSTRINGA    = TV_FIRST + 23;
  5377.   {$EXTERNALSYM TVM_GETISEARCHSTRINGW}
  5378.   TVM_GETISEARCHSTRINGW    = TV_FIRST + 64;
  5379. {$IFDEF UNICODE}
  5380.   {$EXTERNALSYM TVM_GETISEARCHSTRING}
  5381.   TVM_GETISEARCHSTRING    = TVM_GETISEARCHSTRINGW;
  5382. {$ELSE}
  5383.   {$EXTERNALSYM TVM_GETISEARCHSTRING}
  5384.   TVM_GETISEARCHSTRING    = TVM_GETISEARCHSTRINGA;
  5385. {$ENDIF}
  5386.  
  5387. {$EXTERNALSYM TreeView_GetISearchStringA}
  5388. function TreeView_GetISearchStringA(hwndTV: HWND; lpsz: PAnsiChar): Bool;
  5389. {$EXTERNALSYM TreeView_GetISearchStringW}
  5390. function TreeView_GetISearchStringW(hwndTV: HWND; lpsz: PWideChar): Bool;
  5391. {$EXTERNALSYM TreeView_GetISearchString}
  5392. function TreeView_GetISearchString(hwndTV: HWND; lpsz: PChar): Bool;
  5393.  
  5394. const
  5395.   {$EXTERNALSYM TVM_SETTOOLTIPS}
  5396.   TVM_SETTOOLTIPS         = TV_FIRST + 24;
  5397.  
  5398. {$EXTERNALSYM TreeView_SetToolTips}
  5399. function TreeView_SetToolTips(wnd: HWND; hwndTT: HWND): HWND;
  5400.  
  5401. const
  5402.   {$EXTERNALSYM TVM_GETTOOLTIPS}
  5403.   TVM_GETTOOLTIPS         = TV_FIRST + 25;
  5404.  
  5405. {$EXTERNALSYM TreeView_GetToolTips}
  5406. function TreeView_GetToolTips(wnd: HWND): HWND;
  5407.  
  5408. const
  5409.   {$EXTERNALSYM TVM_SETINSERTMARK}
  5410.   TVM_SETINSERTMARK       = TV_FIRST + 26;
  5411.  
  5412. {$EXTERNALSYM TreeView_SetInsertMark}
  5413. function TreeView_SetInsertMark(hwnd: HWND; hItem: Integer; fAfter: BOOL): BOOL;
  5414.  
  5415. const
  5416.   {$EXTERNALSYM TVM_SETUNICODEFORMAT}
  5417.   TVM_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  5418.  
  5419. {$EXTERNALSYM TreeView_SetUnicodeFormat}
  5420. function TreeView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  5421.  
  5422. const
  5423.   {$EXTERNALSYM TVM_GETUNICODEFORMAT}
  5424.   TVM_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  5425.  
  5426. {$EXTERNALSYM TreeView_GetUnicodeFormat}
  5427. function TreeView_GetUnicodeFormat(hwnd: HWND): BOOL;
  5428.  
  5429. const
  5430.   {$EXTERNALSYM TVM_SETITEMHEIGHT}
  5431.   TVM_SETITEMHEIGHT         = TV_FIRST + 27;
  5432.  
  5433. {$EXTERNALSYM TreeView_SetItemHeight}
  5434. function TreeView_SetItemHeight(hwnd: HWND; iHeight: Integer): Integer;
  5435.  
  5436. const
  5437.   {$EXTERNALSYM TVM_GETITEMHEIGHT}
  5438.   TVM_GETITEMHEIGHT         = TV_FIRST + 28;
  5439.  
  5440. {$EXTERNALSYM TreeView_GetItemHeight}
  5441. function TreeView_GetItemHeight(hwnd: HWND): Integer;
  5442.  
  5443. const
  5444.   {$EXTERNALSYM TVM_SETBKCOLOR}
  5445.   TVM_SETBKCOLOR              = TV_FIRST + 29;
  5446.  
  5447. {$EXTERNALSYM TreeView_SetBkColor}
  5448. function TreeView_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  5449.  
  5450. const
  5451.   {$EXTERNALSYM TVM_SETTEXTCOLOR}
  5452.   TVM_SETTEXTCOLOR              = TV_FIRST + 30;
  5453.  
  5454. {$EXTERNALSYM TreeView_SetTextColor}
  5455. function TreeView_SetTextColor(hwnd: HWND; clr: COLORREF): COLORREF;
  5456.  
  5457. const
  5458.   {$EXTERNALSYM TVM_GETBKCOLOR}
  5459.   TVM_GETBKCOLOR              = TV_FIRST + 31;
  5460.  
  5461. {$EXTERNALSYM TreeView_GetBkColor}
  5462. function TreeView_GetBkColor(hwnd: HWND): COLORREF;
  5463.  
  5464. const
  5465.   {$EXTERNALSYM TVM_GETTEXTCOLOR}
  5466.   TVM_GETTEXTCOLOR              = TV_FIRST + 32;
  5467.  
  5468. {$EXTERNALSYM TreeView_GetTextColor}
  5469. function TreeView_GetTextColor(hwnd: HWND): COLORREF;
  5470.  
  5471. const
  5472.   {$EXTERNALSYM TVM_SETSCROLLTIME}
  5473.   TVM_SETSCROLLTIME              = TV_FIRST + 33;
  5474.  
  5475. {$EXTERNALSYM TreeView_SetScrollTime}
  5476. function TreeView_SetScrollTime(hwnd: HWND; uTime: UINT): UINT;
  5477.  
  5478. const
  5479.   {$EXTERNALSYM TVM_GETSCROLLTIME}
  5480.   TVM_GETSCROLLTIME              = TV_FIRST + 34;
  5481.  
  5482. {$EXTERNALSYM TreeView_GetScrollTime}
  5483. function TreeView_GetScrollTime(hwnd: HWND): UINT;
  5484.  
  5485. const
  5486.   {$EXTERNALSYM TVM_SETINSERTMARKCOLOR}
  5487.   TVM_SETINSERTMARKCOLOR         = TV_FIRST + 37;
  5488.  
  5489. {$EXTERNALSYM TreeView_SetInsertMarkColor}
  5490. function TreeView_SetInsertMarkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  5491.  
  5492. const
  5493.   {$EXTERNALSYM TVM_GETINSERTMARKCOLOR}
  5494.   TVM_GETINSERTMARKCOLOR         = TV_FIRST + 38;
  5495.  
  5496. {$EXTERNALSYM TreeView_GetInsertMarkColor}
  5497. function TreeView_GetInsertMarkColor(hwnd: HWND): COLORREF;
  5498.  
  5499. type
  5500.   PNMTreeViewA = ^TNMTreeViewA;
  5501.   PNMTreeViewW = ^TNMTreeViewW;
  5502.   PNMTreeView = PNMTreeViewA;
  5503.   {$EXTERNALSYM tagNMTREEVIEWA}
  5504.   tagNMTREEVIEWA = packed record
  5505.     hdr: TNMHDR;
  5506.     action: UINT;
  5507.     itemOld: TTVItemA;
  5508.     itemNew: TTVItemA;
  5509.     ptDrag: TPoint;
  5510.   end;
  5511.   {$EXTERNALSYM tagNMTREEVIEWW}
  5512.   tagNMTREEVIEWW = packed record
  5513.     hdr: TNMHDR;
  5514.     action: UINT;
  5515.     itemOld: TTVItemW;
  5516.     itemNew: TTVItemW;
  5517.     ptDrag: TPoint;
  5518.   end;
  5519.   {$EXTERNALSYM tagNMTREEVIEW}
  5520.   tagNMTREEVIEW = tagNMTREEVIEWA;
  5521.   {$EXTERNALSYM _NM_TREEVIEWA}
  5522.   _NM_TREEVIEWA = tagNMTREEVIEWA;
  5523.   {$EXTERNALSYM _NM_TREEVIEWW}
  5524.   _NM_TREEVIEWW = tagNMTREEVIEWW;
  5525.   {$EXTERNALSYM _NM_TREEVIEW}
  5526.   _NM_TREEVIEW = _NM_TREEVIEWA;
  5527.   TNMTreeViewA  = tagNMTREEVIEWA;
  5528.   TNMTreeViewW  = tagNMTREEVIEWW;
  5529.   TNMTreeView = TNMTreeViewA;
  5530.   {$EXTERNALSYM NM_TREEVIEWA}
  5531.   NM_TREEVIEWA  = tagNMTREEVIEWA;
  5532.   {$EXTERNALSYM NM_TREEVIEWW}
  5533.   NM_TREEVIEWW  = tagNMTREEVIEWW;
  5534.   {$EXTERNALSYM NM_TREEVIEW}
  5535.   NM_TREEVIEW = NM_TREEVIEWA;
  5536.  
  5537. const
  5538.   {$EXTERNALSYM TVN_SELCHANGINGA}
  5539.   TVN_SELCHANGINGA         = TVN_FIRST-1;
  5540.   {$EXTERNALSYM TVN_SELCHANGEDA}
  5541.   TVN_SELCHANGEDA          = TVN_FIRST-2;
  5542.   {$EXTERNALSYM TVN_SELCHANGINGW}
  5543.   TVN_SELCHANGINGW         = TVN_FIRST-50;
  5544.   {$EXTERNALSYM TVN_SELCHANGEDW}
  5545.   TVN_SELCHANGEDW          = TVN_FIRST-51;
  5546. {$IFDEF UNICODE}
  5547.   {$EXTERNALSYM TVN_SELCHANGING}
  5548.   TVN_SELCHANGING         = TVN_SELCHANGINGW;
  5549.   {$EXTERNALSYM TVN_SELCHANGED}
  5550.   TVN_SELCHANGED          = TVN_SELCHANGEDW;
  5551. {$ELSE}
  5552.   {$EXTERNALSYM TVN_SELCHANGING}
  5553.   TVN_SELCHANGING         = TVN_SELCHANGINGA;
  5554.   {$EXTERNALSYM TVN_SELCHANGED}
  5555.   TVN_SELCHANGED          = TVN_SELCHANGEDA;
  5556. {$ENDIF}
  5557.  
  5558. const
  5559.   {$EXTERNALSYM TVC_UNKNOWN}
  5560.   TVC_UNKNOWN             = $0000;
  5561.   {$EXTERNALSYM TVC_BYMOUSE}
  5562.   TVC_BYMOUSE             = $0001;
  5563.   {$EXTERNALSYM TVC_BYKEYBOARD}
  5564.   TVC_BYKEYBOARD          = $0002;
  5565.  
  5566. const
  5567.   {$EXTERNALSYM TVN_GETDISPINFOA}
  5568.   TVN_GETDISPINFOA         = TVN_FIRST-3;
  5569.   {$EXTERNALSYM TVN_SETDISPINFOA}
  5570.   TVN_SETDISPINFOA         = TVN_FIRST-4;
  5571.   {$EXTERNALSYM TVN_GETDISPINFOW}
  5572.   TVN_GETDISPINFOW         = TVN_FIRST-52;
  5573.   {$EXTERNALSYM TVN_SETDISPINFOW}
  5574.   TVN_SETDISPINFOW         = TVN_FIRST-53;
  5575. {$IFDEF UNICODE}
  5576.   {$EXTERNALSYM TVN_GETDISPINFO}
  5577.   TVN_GETDISPINFO         = TVN_GETDISPINFOW;
  5578.   {$EXTERNALSYM TVN_SETDISPINFO}
  5579.   TVN_SETDISPINFO         = TVN_SETDISPINFOW;
  5580. {$ELSE}
  5581.   {$EXTERNALSYM TVN_GETDISPINFO}
  5582.   TVN_GETDISPINFO         = TVN_GETDISPINFOA;
  5583.   {$EXTERNALSYM TVN_SETDISPINFO}
  5584.   TVN_SETDISPINFO         = TVN_SETDISPINFOA;
  5585. {$ENDIF}
  5586.  
  5587.   {$EXTERNALSYM TVIF_DI_SETITEM}
  5588.   TVIF_DI_SETITEM         = $1000;
  5589.  
  5590. type
  5591.   PTVDispInfoA = ^TTVDispInfoA;
  5592.   PTVDispInfoW = ^TTVDispInfoW;
  5593.   PTVDispInfo = PTVDispInfoA;
  5594.   {$EXTERNALSYM tagTVDISPINFOA}
  5595.   tagTVDISPINFOA = packed record
  5596.     hdr: TNMHDR;
  5597.     item: TTVItemA;
  5598.   end;
  5599.   {$EXTERNALSYM tagTVDISPINFOW}
  5600.   tagTVDISPINFOW = packed record
  5601.     hdr: TNMHDR;
  5602.     item: TTVItemW;
  5603.   end;
  5604.   {$EXTERNALSYM tagTVDISPINFO}
  5605.   tagTVDISPINFO = tagTVDISPINFOA;
  5606.   {$EXTERNALSYM _TV_DISPINFOA}
  5607.   _TV_DISPINFOA = tagTVDISPINFOA;
  5608.   {$EXTERNALSYM _TV_DISPINFOW}
  5609.   _TV_DISPINFOW = tagTVDISPINFOW;
  5610.   {$EXTERNALSYM _TV_DISPINFO}
  5611.   _TV_DISPINFO = _TV_DISPINFOA;
  5612.   TTVDispInfoA = tagTVDISPINFOA;
  5613.   TTVDispInfoW = tagTVDISPINFOW;
  5614.   TTVDispInfo = TTVDispInfoA;
  5615.   {$EXTERNALSYM TV_DISPINFOA}
  5616.   TV_DISPINFOA = tagTVDISPINFOA;
  5617.   {$EXTERNALSYM TV_DISPINFOW}
  5618.   TV_DISPINFOW = tagTVDISPINFOW;
  5619.   {$EXTERNALSYM TV_DISPINFO}
  5620.   TV_DISPINFO = TV_DISPINFOA;
  5621.  
  5622. const
  5623.   {$EXTERNALSYM TVN_ITEMEXPANDINGA}
  5624.   TVN_ITEMEXPANDINGA       = TVN_FIRST-5;
  5625.   {$EXTERNALSYM TVN_ITEMEXPANDEDA}
  5626.   TVN_ITEMEXPANDEDA        = TVN_FIRST-6;
  5627.   {$EXTERNALSYM TVN_BEGINDRAGA}
  5628.   TVN_BEGINDRAGA           = TVN_FIRST-7;
  5629.   {$EXTERNALSYM TVN_BEGINRDRAGA}
  5630.   TVN_BEGINRDRAGA          = TVN_FIRST-8;
  5631.   {$EXTERNALSYM TVN_DELETEITEMA}
  5632.   TVN_DELETEITEMA          = TVN_FIRST-9;
  5633.   {$EXTERNALSYM TVN_BEGINLABELEDITA}
  5634.   TVN_BEGINLABELEDITA      = TVN_FIRST-10;
  5635.   {$EXTERNALSYM TVN_ENDLABELEDITA}
  5636.   TVN_ENDLABELEDITA        = TVN_FIRST-11;
  5637.   {$EXTERNALSYM TVN_GETINFOTIPA}
  5638.   TVN_GETINFOTIPA          = TVN_FIRST-13;
  5639.   {$EXTERNALSYM TVN_ITEMEXPANDINGW}
  5640.   TVN_ITEMEXPANDINGW       = TVN_FIRST-54;
  5641.   {$EXTERNALSYM TVN_ITEMEXPANDEDW}
  5642.   TVN_ITEMEXPANDEDW        = TVN_FIRST-55;
  5643.   {$EXTERNALSYM TVN_BEGINDRAGW}
  5644.   TVN_BEGINDRAGW           = TVN_FIRST-56;
  5645.   {$EXTERNALSYM TVN_BEGINRDRAGW}
  5646.   TVN_BEGINRDRAGW          = TVN_FIRST-57;
  5647.   {$EXTERNALSYM TVN_DELETEITEMW}
  5648.   TVN_DELETEITEMW          = TVN_FIRST-58;
  5649.   {$EXTERNALSYM TVN_BEGINLABELEDITW}
  5650.   TVN_BEGINLABELEDITW      = TVN_FIRST-59;
  5651.   {$EXTERNALSYM TVN_ENDLABELEDITW}
  5652.   TVN_ENDLABELEDITW        = TVN_FIRST-60;
  5653.   {$EXTERNALSYM TVN_GETINFOTIPW}
  5654.   TVN_GETINFOTIPW          = TVN_FIRST-14;
  5655. {$IFDEF UNICODE}
  5656.   {$EXTERNALSYM TVN_ITEMEXPANDING}
  5657.   TVN_ITEMEXPANDING       = TVN_ITEMEXPANDINGW;
  5658.   {$EXTERNALSYM TVN_ITEMEXPANDED}
  5659.   TVN_ITEMEXPANDED        = TVN_ITEMEXPANDEDW;
  5660.   {$EXTERNALSYM TVN_BEGINDRAG}
  5661.   TVN_BEGINDRAG           = TVN_BEGINDRAGW;
  5662.   {$EXTERNALSYM TVN_BEGINRDRAG}
  5663.   TVN_BEGINRDRAG          = TVN_BEGINRDRAGW;
  5664.   {$EXTERNALSYM TVN_DELETEITEM}
  5665.   TVN_DELETEITEM          = TVN_DELETEITEMW;
  5666.   {$EXTERNALSYM TVN_BEGINLABELEDIT}
  5667.   TVN_BEGINLABELEDIT      = TVN_BEGINLABELEDITW;
  5668.   {$EXTERNALSYM TVN_ENDLABELEDIT}
  5669.   TVN_ENDLABELEDIT        = TVN_ENDLABELEDITW;
  5670.   {$EXTERNALSYM TVN_GETINFOTIP}
  5671.   TVN_GETINFOTIP         = TVN_GETINFOTIPW;
  5672. {$ELSE}
  5673.   {$EXTERNALSYM TVN_ITEMEXPANDING}
  5674.   TVN_ITEMEXPANDING       = TVN_ITEMEXPANDINGA;
  5675.   {$EXTERNALSYM TVN_ITEMEXPANDED}
  5676.   TVN_ITEMEXPANDED        = TVN_ITEMEXPANDEDA;
  5677.   {$EXTERNALSYM TVN_BEGINDRAG}
  5678.   TVN_BEGINDRAG           = TVN_BEGINDRAGA;
  5679.   {$EXTERNALSYM TVN_BEGINRDRAG}
  5680.   TVN_BEGINRDRAG          = TVN_BEGINRDRAGA;
  5681.   {$EXTERNALSYM TVN_DELETEITEM}
  5682.   TVN_DELETEITEM          = TVN_DELETEITEMA;
  5683.   {$EXTERNALSYM TVN_BEGINLABELEDIT}
  5684.   TVN_BEGINLABELEDIT      = TVN_BEGINLABELEDITA;
  5685.   {$EXTERNALSYM TVN_ENDLABELEDIT}
  5686.   TVN_ENDLABELEDIT        = TVN_ENDLABELEDITA;
  5687.   {$EXTERNALSYM TVN_GETINFOTIP}
  5688.   TVN_GETINFOTIP         = TVN_GETINFOTIPA;
  5689. {$ENDIF}
  5690.  
  5691. const
  5692.   {$EXTERNALSYM TVN_KEYDOWN}
  5693.   TVN_KEYDOWN             = TVN_FIRST-12;
  5694.   {$EXTERNALSYM TVN_SINGLEEXPAND}
  5695.   TVN_SINGLEEXPAND        = TVN_FIRST-15;
  5696.  
  5697. type
  5698.   {$EXTERNALSYM tagTVKEYDOWN}
  5699.   tagTVKEYDOWN = packed record
  5700.     hdr: TNMHDR;
  5701.     wVKey: Word;
  5702.     flags: UINT;
  5703.   end;
  5704.   {$EXTERNALSYM _TV_KEYDOWN}
  5705.   _TV_KEYDOWN = tagTVKEYDOWN;
  5706.   TTVKeyDown = tagTVKEYDOWN;
  5707.   {$EXTERNALSYM TV_KEYDOWN}
  5708.   TV_KEYDOWN = tagTVKEYDOWN;
  5709.  
  5710.   {$EXTERNALSYM tagNMTVCUSTOMDRAW}
  5711.   tagNMTVCUSTOMDRAW = packed record
  5712.     nmcd: TNMCustomDraw;
  5713.     clrText: COLORREF;
  5714.     clrTextBk: COLORREF;
  5715.     iLevel: Integer;
  5716.   end;
  5717.   PNMTVCustomDraw = ^TNMTVCustomDraw;
  5718.   TNMTVCustomDraw = tagNMTVCUSTOMDRAW;
  5719.  
  5720.   // for tooltips
  5721.   {$EXTERNALSYM tagNMTVGETINFOTIPA}
  5722.   tagNMTVGETINFOTIPA = packed record
  5723.     hdr: TNMHdr;
  5724.     pszText: PAnsiChar;
  5725.     cchTextMax: Integer;
  5726.     hItem: HTREEITEM;
  5727.     lParam: LPARAM;
  5728.   end;
  5729.   {$EXTERNALSYM tagNMTVGETINFOTIPW}
  5730.   tagNMTVGETINFOTIPW = packed record
  5731.     hdr: TNMHdr;
  5732.     pszText: PWideChar;
  5733.     cchTextMax: Integer;
  5734.     hItem: HTREEITEM;
  5735.     lParam: LPARAM;
  5736.   end;
  5737.   {$EXTERNALSYM tagNMTVGETINFOTIP}
  5738.   tagNMTVGETINFOTIP = tagNMTVGETINFOTIPA;
  5739.   PNMTVGetInfoTipA = ^TNMTVGetInfoTipA;
  5740.   PNMTVGetInfoTipW = ^TNMTVGetInfoTipW;
  5741.   PNMTVGetInfoTip = PNMTVGetInfoTipA;
  5742.   TNMTVGetInfoTipA = tagNMTVGETINFOTIPA;
  5743.   TNMTVGetInfoTipW = tagNMTVGETINFOTIPW;
  5744.   TNMTVGetInfoTip = TNMTVGetInfoTipA;
  5745.  
  5746. const
  5747.   // treeview's customdraw return meaning don't draw images.  valid on CDRF_NOTIFYITEMPREPAINT
  5748.   {$EXTERNALSYM TVCDRF_NOIMAGES}
  5749.   TVCDRF_NOIMAGES         = $00010000;
  5750.  
  5751. { ====== ComboBoxEx ======================== }
  5752.  
  5753. const
  5754.   {$EXTERNALSYM WC_COMBOBOXEX}
  5755.   WC_COMBOBOXEX = 'ComboBoxEx32';
  5756.  
  5757.   {$EXTERNALSYM CBEIF_TEXT}
  5758.   CBEIF_TEXT              = $00000001;
  5759.   {$EXTERNALSYM CBEIF_IMAGE}
  5760.   CBEIF_IMAGE             = $00000002;
  5761.   {$EXTERNALSYM CBEIF_SELECTEDIMAGE}
  5762.   CBEIF_SELECTEDIMAGE     = $00000004;
  5763.   {$EXTERNALSYM CBEIF_OVERLAY}
  5764.   CBEIF_OVERLAY           = $00000008;
  5765.   {$EXTERNALSYM CBEIF_INDENT}
  5766.   CBEIF_INDENT            = $00000010;
  5767.   {$EXTERNALSYM CBEIF_LPARAM}
  5768.   CBEIF_LPARAM            = $00000020;
  5769.  
  5770.   {$EXTERNALSYM CBEIF_DI_SETITEM}
  5771.   CBEIF_DI_SETITEM        = $10000000;
  5772.  
  5773. type
  5774.   {$EXTERNALSYM tagCOMBOBOXEXITEMA}
  5775.   tagCOMBOBOXEXITEMA = packed record
  5776.     mask: UINT;
  5777.     iItem: Integer;
  5778.     pszText: PAnsiChar;
  5779.     cchTextMax: Integer;
  5780.     iImage: Integer;
  5781.     iSelectedImage: Integer;
  5782.     iOverlay: Integer;
  5783.     iIndent: Integer;
  5784.     lParam: LPARAM;
  5785.   end;
  5786.   {$EXTERNALSYM tagCOMBOBOXEXITEMW}
  5787.   tagCOMBOBOXEXITEMW = packed record
  5788.     mask: UINT;
  5789.     iItem: Integer;
  5790.     pszText: PWideChar;
  5791.     cchTextMax: Integer;
  5792.     iImage: Integer;
  5793.     iSelectedImage: Integer;
  5794.     iOverlay: Integer;
  5795.     iIndent: Integer;
  5796.     lParam: LPARAM;
  5797.   end;
  5798.   {$EXTERNALSYM tagCOMBOBOXEXITEM}
  5799.   tagCOMBOBOXEXITEM = tagCOMBOBOXEXITEMA;
  5800.   PComboBoxExItemA = ^TComboBoxExItemA;
  5801.   PComboBoxExItemW = ^TComboBoxExItemW;
  5802.   PComboBoxExItem = PComboBoxExItemA;
  5803.   TComboBoxExItemA = tagCOMBOBOXEXITEMA;
  5804.   TComboBoxExItemW = tagCOMBOBOXEXITEMW;
  5805.   TComboBoxExItem = TComboBoxExItemA;
  5806.  
  5807. const
  5808.   {$EXTERNALSYM CBEM_INSERTITEMA}
  5809.   CBEM_INSERTITEMA        = WM_USER + 1;
  5810.   {$EXTERNALSYM CBEM_SETIMAGELIST}
  5811.   CBEM_SETIMAGELIST       = WM_USER + 2;
  5812.   {$EXTERNALSYM CBEM_GETIMAGELIST}
  5813.   CBEM_GETIMAGELIST       = WM_USER + 3;
  5814.   {$EXTERNALSYM CBEM_GETITEMA}
  5815.   CBEM_GETITEMA           = WM_USER + 4;
  5816.   {$EXTERNALSYM CBEM_SETITEMA}
  5817.   CBEM_SETITEMA           = WM_USER + 5;
  5818.   {$EXTERNALSYM CBEM_DELETEITEM}
  5819.   CBEM_DELETEITEM         = CB_DELETESTRING;
  5820.   {$EXTERNALSYM CBEM_GETCOMBOCONTROL}
  5821.   CBEM_GETCOMBOCONTROL    = WM_USER + 6;
  5822.   {$EXTERNALSYM CBEM_GETEDITCONTROL}
  5823.   CBEM_GETEDITCONTROL     = WM_USER + 7;
  5824.   {$EXTERNALSYM CBEM_SETEXSTYLE}
  5825.   CBEM_SETEXSTYLE         = WM_USER + 8;  // use SETEXTENDEDSTYLE instead
  5826.   {$EXTERNALSYM CBEM_GETEXSTYLE}
  5827.   CBEM_GETEXSTYLE         = WM_USER + 9;  // use GETEXTENDEDSTYLE instead
  5828.   {$EXTERNALSYM CBEM_GETEXTENDEDSTYLE}
  5829.   CBEM_GETEXTENDEDSTYLE   = WM_USER + 9;
  5830.   {$EXTERNALSYM CBEM_HASEDITCHANGED}
  5831.   CBEM_HASEDITCHANGED     = WM_USER + 10;
  5832.   {$EXTERNALSYM CBEM_INSERTITEMW}
  5833.   CBEM_INSERTITEMW        = WM_USER + 11;
  5834.   {$EXTERNALSYM CBEM_SETITEMW}
  5835.   CBEM_SETITEMW           = WM_USER + 12;
  5836.   {$EXTERNALSYM CBEM_GETITEMW}
  5837.   CBEM_GETITEMW           = WM_USER + 13;
  5838.   {$EXTERNALSYM CBEM_SETEXTENDEDSTYLE}
  5839.   CBEM_SETEXTENDEDSTYLE   = WM_USER + 14; // lparam == new style, wParam (optional) == mask
  5840.   {$EXTERNALSYM CBEM_SETUNICODEFORMAT}
  5841.   CBEM_SETUNICODEFORMAT   = CCM_SETUNICODEFORMAT;
  5842.   {$EXTERNALSYM CBEM_GETUNICODEFORMAT}
  5843.   CBEM_GETUNICODEFORMAT   = CCM_GETUNICODEFORMAT;
  5844.  
  5845. {$IFDEF UNICODE}
  5846.   {$EXTERNALSYM CBEM_INSERTITEM}
  5847.   CBEM_INSERTITEM         = CBEM_INSERTITEMW;
  5848.   {$EXTERNALSYM CBEM_SETITEM}
  5849.   CBEM_SETITEM            = CBEM_SETITEMW;
  5850.   {$EXTERNALSYM CBEM_GETITEM}
  5851.   CBEM_GETITEM            = CBEM_GETITEMW;
  5852. {$ELSE}
  5853.   {$EXTERNALSYM CBEM_INSERTITEM}
  5854.   CBEM_INSERTITEM         = CBEM_INSERTITEMA;
  5855.   {$EXTERNALSYM CBEM_SETITEM}
  5856.   CBEM_SETITEM            = CBEM_SETITEMA;
  5857.   {$EXTERNALSYM CBEM_GETITEM}
  5858.   CBEM_GETITEM            = CBEM_GETITEMA;
  5859. {$ENDIF}
  5860.  
  5861.   {$EXTERNALSYM CBES_EX_NOEDITIMAGE}
  5862.   CBES_EX_NOEDITIMAGE          = $00000001;
  5863.   {$EXTERNALSYM CBES_EX_NOEDITIMAGEINDENT}
  5864.   CBES_EX_NOEDITIMAGEINDENT    = $00000002;
  5865.   {$EXTERNALSYM CBES_EX_PATHWORDBREAKPROC}
  5866.   CBES_EX_PATHWORDBREAKPROC    = $00000004;
  5867.   {$EXTERNALSYM CBES_EX_NOSIZELIMIT}
  5868.   CBES_EX_NOSIZELIMIT          = $00000008;
  5869.   {$EXTERNALSYM CBES_EX_CASESENSITIVE}
  5870.   CBES_EX_CASESENSITIVE        = $00000010;
  5871.  
  5872. type
  5873.   {$EXTERNALSYM NMCOMBOBOXEXA}
  5874.   NMCOMBOBOXEXA = packed record
  5875.     hdr: TNMHdr;
  5876.     ceItem: TComboBoxExItemA;
  5877.   end;
  5878.   {$EXTERNALSYM NMCOMBOBOXEXW}
  5879.   NMCOMBOBOXEXW = packed record
  5880.     hdr: TNMHdr;
  5881.     ceItem: TComboBoxExItemW;
  5882.   end;
  5883.   {$EXTERNALSYM NMCOMBOBOXEX}
  5884.   NMCOMBOBOXEX = NMCOMBOBOXEXA;
  5885.   PNMComboBoxExA = ^TNMComboBoxExA;
  5886.   PNMComboBoxExW = ^TNMComboBoxExW;
  5887.   PNMComboBoxEx = PNMComboBoxExA;
  5888.   TNMComboBoxExA = NMCOMBOBOXEXA;
  5889.   TNMComboBoxExW = NMCOMBOBOXEXW;
  5890.   TNMComboBoxEx = TNMComboBoxExA;
  5891.  
  5892. const
  5893.   {$EXTERNALSYM CBEN_GETDISPINFOA}
  5894.   CBEN_GETDISPINFOA       = CBEN_FIRST - 0;
  5895.   {$EXTERNALSYM CBEN_INSERTITEM}
  5896.   CBEN_INSERTITEM         = CBEN_FIRST - 1;
  5897.   {$EXTERNALSYM CBEN_DELETEITEM}
  5898.   CBEN_DELETEITEM         = CBEN_FIRST - 2;
  5899.   {$EXTERNALSYM CBEN_BEGINEDIT}
  5900.   CBEN_BEGINEDIT          = CBEN_FIRST - 4;
  5901.   {$EXTERNALSYM CBEN_ENDEDITA}
  5902.   CBEN_ENDEDITA           = CBEN_FIRST - 5; // lParam specifies why the endedit is happening
  5903.   {$EXTERNALSYM CBEN_ENDEDITW}
  5904.   CBEN_ENDEDITW           = CBEN_FIRST - 6;
  5905.   {$EXTERNALSYM CBEN_GETDISPINFOW}
  5906.   CBEN_GETDISPINFOW       = CBEN_FIRST - 7;
  5907.   {$EXTERNALSYM CBEN_DRAGBEGINA}
  5908.   CBEN_DRAGBEGINA                = CBEN_FIRST - 8;
  5909.   {$EXTERNALSYM CBEN_DRAGBEGINW}
  5910.   CBEN_DRAGBEGINW                = CBEN_FIRST - 9;
  5911.  
  5912. {$IFDEF UNICODE}
  5913.   {$EXTERNALSYM CBEN_ENDEDIT}
  5914.   CBEN_ENDEDIT            = CBEN_ENDEDITW;
  5915.   {$EXTERNALSYM CBEN_GETDISPINFO}
  5916.   CBEN_GETDISPINFO        = CBEN_GETDISPINFOW;
  5917.   {$EXTERNALSYM CBEN_DRAGBEGIN}
  5918.   CBEN_DRAGBEGIN          = CBEN_DRAGBEGINW;
  5919. {$ELSE}
  5920.   {$EXTERNALSYM CBEN_ENDEDIT}
  5921.   CBEN_ENDEDIT            = CBEN_ENDEDITA;
  5922.   {$EXTERNALSYM CBEN_GETDISPINFO}
  5923.   CBEN_GETDISPINFO        = CBEN_GETDISPINFOA;
  5924.   {$EXTERNALSYM CBEN_DRAGBEGIN}
  5925.   CBEN_DRAGBEGIN          = CBEN_DRAGBEGINA;
  5926. {$ENDIF}
  5927.  
  5928.   {$EXTERNALSYM CBENF_KILLFOCUS}
  5929.   CBENF_KILLFOCUS         = 1;
  5930.   {$EXTERNALSYM CBENF_RETURN}
  5931.   CBENF_RETURN            = 2;
  5932.   {$EXTERNALSYM CBENF_ESCAPE}
  5933.   CBENF_ESCAPE            = 3;
  5934.   {$EXTERNALSYM CBENF_DROPDOWN}
  5935.   CBENF_DROPDOWN          = 4;
  5936.  
  5937.   {$EXTERNALSYM CBEMAXSTRLEN}
  5938.   CBEMAXSTRLEN = 260;
  5939.  
  5940. type
  5941.   // CBEN_DRAGBEGIN sends this information ...
  5942.   {$EXTERNALSYM NMCBEDRAGBEGINA}
  5943.   NMCBEDRAGBEGINA = packed record
  5944.     hdr: TNMHdr;
  5945.     iItemid: Integer;
  5946.     szText: array[0..CBEMAXSTRLEN - 1] of AnsiChar;
  5947.   end;
  5948.   {$EXTERNALSYM NMCBEDRAGBEGINW}
  5949.   NMCBEDRAGBEGINW = packed record
  5950.     hdr: TNMHdr;
  5951.     iItemid: Integer;
  5952.     szText: array[0..CBEMAXSTRLEN - 1] of WideChar;
  5953.   end;
  5954.   {$EXTERNALSYM NMCBEDRAGBEGIN}
  5955.   NMCBEDRAGBEGIN = NMCBEDRAGBEGINA;
  5956.   PNMCBEDragBeginA = ^TNMCBEDragBeginA;
  5957.   PNMCBEDragBeginW = ^TNMCBEDragBeginW;
  5958.   PNMCBEDragBegin = PNMCBEDragBeginA;
  5959.   TNMCBEDragBeginA = NMCBEDRAGBEGINA;
  5960.   TNMCBEDragBeginW = NMCBEDRAGBEGINW;
  5961.   TNMCBEDragBegin = TNMCBEDragBeginA;
  5962.  
  5963.   // CBEN_ENDEDIT sends this information...
  5964.   // fChanged if the user actually did anything
  5965.   // iNewSelection gives what would be the new selection unless the notify is failed
  5966.   //                      iNewSelection may be CB_ERR if there's no match
  5967.   {$EXTERNALSYM NMCBEENDEDITA}
  5968.   NMCBEENDEDITA = packed record
  5969.     hdr: TNMHdr;
  5970.     fChanged: BOOL;
  5971.     iNewSelection: Integer;
  5972.     szText: array[0..CBEMAXSTRLEN - 1] of AnsiChar;
  5973.     iWhy: Integer;
  5974.   end;
  5975.   {$EXTERNALSYM NMCBEENDEDITW}
  5976.   NMCBEENDEDITW = packed record
  5977.     hdr: TNMHdr;
  5978.     fChanged: BOOL;
  5979.     iNewSelection: Integer;
  5980.     szText: array[0..CBEMAXSTRLEN - 1] of WideChar;
  5981.     iWhy: Integer;
  5982.   end;
  5983.   {$EXTERNALSYM NMCBEENDEDIT}
  5984.   NMCBEENDEDIT = NMCBEENDEDITA;
  5985.   PNMCBEEndEditA = ^TNMCBEEndEditA;
  5986.   PNMCBEEndEditW = ^TNMCBEEndEditW;
  5987.   PNMCBEEndEdit = PNMCBEEndEditA;
  5988.   TNMCBEEndEditA = NMCBEENDEDITA;
  5989.   TNMCBEEndEditW = NMCBEENDEDITW;
  5990.   TNMCBEEndEdit = TNMCBEEndEditA;
  5991.  
  5992. { ====== TAB CONTROL ======================== }
  5993.  
  5994. const
  5995.   {$EXTERNALSYM WC_TABCONTROL}
  5996.   WC_TABCONTROL = 'SysTabControl32';
  5997.  
  5998. const
  5999.   {$EXTERNALSYM TCS_SCROLLOPPOSITE}
  6000.   TCS_SCROLLOPPOSITE    = $0001;  // assumes multiline tab
  6001.   {$EXTERNALSYM TCS_BOTTOM}
  6002.   TCS_BOTTOM            = $0002;
  6003.   {$EXTERNALSYM TCS_RIGHT}
  6004.   TCS_RIGHT             = $0002;
  6005.   {$EXTERNALSYM TCS_MULTISELECT}
  6006.   TCS_MULTISELECT       = $0004;  // allow multi-select in button mode
  6007.   {$EXTERNALSYM TCS_FLATBUTTONS}
  6008.   TCS_FLATBUTTONS       = $0008;
  6009.   {$EXTERNALSYM TCS_FORCEICONLEFT}
  6010.   TCS_FORCEICONLEFT     = $0010;
  6011.   {$EXTERNALSYM TCS_FORCELABELLEFT}
  6012.   TCS_FORCELABELLEFT    = $0020;
  6013.   {$EXTERNALSYM TCS_HOTTRACK}
  6014.   TCS_HOTTRACK          = $0040;
  6015.   {$EXTERNALSYM TCS_VERTICAL}
  6016.   TCS_VERTICAL          = $0080;
  6017.   {$EXTERNALSYM TCS_TABS}
  6018.   TCS_TABS              = $0000;
  6019.   {$EXTERNALSYM TCS_BUTTONS}
  6020.   TCS_BUTTONS           = $0100;
  6021.   {$EXTERNALSYM TCS_SINGLELINE}
  6022.   TCS_SINGLELINE        = $0000;
  6023.   {$EXTERNALSYM TCS_MULTILINE}
  6024.   TCS_MULTILINE         = $0200;
  6025.   {$EXTERNALSYM TCS_RIGHTJUSTIFY}
  6026.   TCS_RIGHTJUSTIFY      = $0000;
  6027.   {$EXTERNALSYM TCS_FIXEDWIDTH}
  6028.   TCS_FIXEDWIDTH        = $0400;
  6029.   {$EXTERNALSYM TCS_RAGGEDRIGHT}
  6030.   TCS_RAGGEDRIGHT       = $0800;
  6031.   {$EXTERNALSYM TCS_FOCUSONBUTTONDOWN}
  6032.   TCS_FOCUSONBUTTONDOWN = $1000;
  6033.   {$EXTERNALSYM TCS_OWNERDRAWFIXED}
  6034.   TCS_OWNERDRAWFIXED    = $2000;
  6035.   {$EXTERNALSYM TCS_TOOLTIPS}
  6036.   TCS_TOOLTIPS          = $4000;
  6037.   {$EXTERNALSYM TCS_FOCUSNEVER}
  6038.   TCS_FOCUSNEVER        = $8000;
  6039.  
  6040.   {$EXTERNALSYM TCS_EX_FLATSEPARATORS}
  6041.   TCS_EX_FLATSEPARATORS = $00000001;
  6042.   {$EXTERNALSYM TCS_EX_REGISTERDROP}
  6043.   TCS_EX_REGISTERDROP   = $00000002;
  6044.  
  6045.   {$EXTERNALSYM TCM_GETIMAGELIST}
  6046.   TCM_GETIMAGELIST       = TCM_FIRST + 2;
  6047.   {$EXTERNALSYM TCM_SETIMAGELIST}
  6048.   TCM_SETIMAGELIST       = TCM_FIRST + 3;
  6049.   {$EXTERNALSYM TCM_GETITEMCOUNT}
  6050.   TCM_GETITEMCOUNT       = TCM_FIRST + 4;
  6051.   {$EXTERNALSYM TCM_DELETEITEM}
  6052.   TCM_DELETEITEM         = TCM_FIRST + 8;
  6053.   {$EXTERNALSYM TCM_DELETEALLITEMS}
  6054.   TCM_DELETEALLITEMS     = TCM_FIRST + 9;
  6055.   {$EXTERNALSYM TCM_GETITEMRECT}
  6056.   TCM_GETITEMRECT        = TCM_FIRST + 10;
  6057.   {$EXTERNALSYM TCM_GETCURSEL}
  6058.   TCM_GETCURSEL          = TCM_FIRST + 11;
  6059.   {$EXTERNALSYM TCM_SETCURSEL}
  6060.   TCM_SETCURSEL          = TCM_FIRST + 12;
  6061.   {$EXTERNALSYM TCM_HITTEST}
  6062.   TCM_HITTEST            = TCM_FIRST + 13;
  6063.   {$EXTERNALSYM TCM_SETITEMEXTRA}
  6064.   TCM_SETITEMEXTRA       = TCM_FIRST + 14;
  6065.   {$EXTERNALSYM TCM_ADJUSTRECT}
  6066.   TCM_ADJUSTRECT         = TCM_FIRST + 40;
  6067.   {$EXTERNALSYM TCM_SETITEMSIZE}
  6068.   TCM_SETITEMSIZE        = TCM_FIRST + 41;
  6069.   {$EXTERNALSYM TCM_REMOVEIMAGE}
  6070.   TCM_REMOVEIMAGE        = TCM_FIRST + 42;
  6071.   {$EXTERNALSYM TCM_SETPADDING}
  6072.   TCM_SETPADDING         = TCM_FIRST + 43;
  6073.   {$EXTERNALSYM TCM_GETROWCOUNT}
  6074.   TCM_GETROWCOUNT        = TCM_FIRST + 44;
  6075.   {$EXTERNALSYM TCM_GETTOOLTIPS}
  6076.   TCM_GETTOOLTIPS        = TCM_FIRST + 45;
  6077.   {$EXTERNALSYM TCM_SETTOOLTIPS}
  6078.   TCM_SETTOOLTIPS        = TCM_FIRST + 46;
  6079.   {$EXTERNALSYM TCM_GETCURFOCUS}
  6080.   TCM_GETCURFOCUS        = TCM_FIRST + 47;
  6081.   {$EXTERNALSYM TCM_SETCURFOCUS}
  6082.   TCM_SETCURFOCUS        = TCM_FIRST + 48;
  6083.   {$EXTERNALSYM TCM_SETMINTABWIDTH}
  6084.   TCM_SETMINTABWIDTH     = TCM_FIRST + 49;
  6085.   {$EXTERNALSYM TCM_DESELECTALL}
  6086.   TCM_DESELECTALL        = TCM_FIRST + 50;
  6087.   {$EXTERNALSYM TCM_HIGHLIGHTITEM}
  6088.   TCM_HIGHLIGHTITEM      = TCM_FIRST + 51;
  6089.   {$EXTERNALSYM TCM_SETEXTENDEDSTYLE}
  6090.   TCM_SETEXTENDEDSTYLE   = TCM_FIRST + 52;  // optional wParam == mask
  6091.   {$EXTERNALSYM TCM_GETEXTENDEDSTYLE}
  6092.   TCM_GETEXTENDEDSTYLE   = TCM_FIRST + 53;
  6093.   {$EXTERNALSYM TCM_SETUNICODEFORMAT}
  6094.   TCM_SETUNICODEFORMAT   = CCM_SETUNICODEFORMAT;
  6095.   {$EXTERNALSYM TCM_GETUNICODEFORMAT}
  6096.   TCM_GETUNICODEFORMAT   = CCM_GETUNICODEFORMAT;
  6097.  
  6098.   {$EXTERNALSYM TCIF_TEXT}
  6099.   TCIF_TEXT       = $0001;
  6100.   {$EXTERNALSYM TCIF_IMAGE}
  6101.   TCIF_IMAGE      = $0002;
  6102.   {$EXTERNALSYM TCIF_RTLREADING}
  6103.   TCIF_RTLREADING = $0004;
  6104.   {$EXTERNALSYM TCIF_PARAM}
  6105.   TCIF_PARAM      = $0008;
  6106.   {$EXTERNALSYM TCIF_STATE}
  6107.   TCIF_STATE      = $0010;
  6108.  
  6109.   {$EXTERNALSYM TCIS_BUTTONPRESSED}
  6110.   TCIS_BUTTONPRESSED      = $0001;
  6111.   {$EXTERNALSYM TCIS_HIGHLIGHTED}
  6112.   TCIS_HIGHLIGHTED        = $0002;
  6113.  
  6114. type
  6115.   PTCItemHeaderA = ^TTCItemHeaderA;
  6116.   PTCItemHeaderW = ^TTCItemHeaderW;
  6117.   PTCItemHeader = PTCItemHeaderA;
  6118.   {$EXTERNALSYM tagTCITEMHEADERA}
  6119.   tagTCITEMHEADERA = packed record
  6120.     mask: UINT;
  6121.     lpReserved1: UINT;
  6122.     lpReserved2: UINT;
  6123.     pszText: PAnsiChar;
  6124.     cchTextMax: Integer;
  6125.     iImage: Integer;
  6126.   end;
  6127.   {$EXTERNALSYM tagTCITEMHEADERW}
  6128.   tagTCITEMHEADERW = packed record
  6129.     mask: UINT;
  6130.     lpReserved1: UINT;
  6131.     lpReserved2: UINT;
  6132.     pszText: PWideChar;
  6133.     cchTextMax: Integer;
  6134.     iImage: Integer;
  6135.   end;
  6136.   {$EXTERNALSYM tagTCITEMHEADER}
  6137.   tagTCITEMHEADER = tagTCITEMHEADERA;
  6138.   {$EXTERNALSYM _TC_ITEMHEADERA}
  6139.   _TC_ITEMHEADERA = tagTCITEMHEADERA;
  6140.   {$EXTERNALSYM _TC_ITEMHEADERW}
  6141.   _TC_ITEMHEADERW = tagTCITEMHEADERW;
  6142.   {$EXTERNALSYM _TC_ITEMHEADER}
  6143.   _TC_ITEMHEADER = _TC_ITEMHEADERA;
  6144.   TTCItemHeaderA = tagTCITEMHEADERA;
  6145.   TTCItemHeaderW = tagTCITEMHEADERW;
  6146.   TTCItemHeader = TTCItemHeaderA;
  6147.   {$EXTERNALSYM TC_ITEMHEADERA}
  6148.   TC_ITEMHEADERA = tagTCITEMHEADERA;
  6149.   {$EXTERNALSYM TC_ITEMHEADERW}
  6150.   TC_ITEMHEADERW = tagTCITEMHEADERW;
  6151.   {$EXTERNALSYM TC_ITEMHEADER}
  6152.   TC_ITEMHEADER = TC_ITEMHEADERA;
  6153.  
  6154.   PTCItemA = ^TTCItemA;
  6155.   PTCItemW = ^TTCItemW;
  6156.   PTCItem = PTCItemA;
  6157.   {$EXTERNALSYM tagTCITEMA}
  6158.   tagTCITEMA = packed record
  6159.     mask: UINT;
  6160.     dwState: UINT;
  6161.     dwStateMask: UINT;
  6162.     pszText: PAnsiChar;
  6163.     cchTextMax: Integer;
  6164.     iImage: Integer;
  6165.     lParam: LPARAM;
  6166.   end;
  6167.   {$EXTERNALSYM tagTCITEMW}
  6168.   tagTCITEMW = packed record
  6169.     mask: UINT;
  6170.     dwState: UINT;
  6171.     dwStateMask: UINT;
  6172.     pszText: PWideChar;
  6173.     cchTextMax: Integer;
  6174.     iImage: Integer;
  6175.     lParam: LPARAM;
  6176.   end;
  6177.   {$EXTERNALSYM tagTCITEM}
  6178.   tagTCITEM = tagTCITEMA;
  6179.   {$EXTERNALSYM _TC_ITEMA}
  6180.   _TC_ITEMA = tagTCITEMA;
  6181.   {$EXTERNALSYM _TC_ITEMW}
  6182.   _TC_ITEMW = tagTCITEMW;
  6183.   {$EXTERNALSYM _TC_ITEM}
  6184.   _TC_ITEM = _TC_ITEMA;
  6185.   TTCItemA = tagTCITEMA;
  6186.   TTCItemW = tagTCITEMW;
  6187.   TTCItem = TTCItemA;
  6188.   {$EXTERNALSYM TC_ITEMA}
  6189.   TC_ITEMA = tagTCITEMA;
  6190.   {$EXTERNALSYM TC_ITEMW}
  6191.   TC_ITEMW = tagTCITEMW;
  6192.   {$EXTERNALSYM TC_ITEM}
  6193.   TC_ITEM = TC_ITEMA;
  6194.  
  6195. const
  6196.   {$EXTERNALSYM TCM_GETITEMA}
  6197.   TCM_GETITEMA             = TCM_FIRST + 5;
  6198.   {$EXTERNALSYM TCM_SETITEMA}
  6199.   TCM_SETITEMA             = TCM_FIRST + 6;
  6200.   {$EXTERNALSYM TCM_INSERTITEMA}
  6201.   TCM_INSERTITEMA          = TCM_FIRST + 7;
  6202.   {$EXTERNALSYM TCM_GETITEMW}
  6203.   TCM_GETITEMW             = TCM_FIRST + 60;
  6204.   {$EXTERNALSYM TCM_SETITEMW}
  6205.   TCM_SETITEMW             = TCM_FIRST + 61;
  6206.   {$EXTERNALSYM TCM_INSERTITEMW}
  6207.   TCM_INSERTITEMW          = TCM_FIRST + 62;
  6208. {$IFDEF UNICODE}
  6209.   {$EXTERNALSYM TCM_GETITEM}
  6210.   TCM_GETITEM             = TCM_GETITEMW;
  6211.   {$EXTERNALSYM TCM_SETITEM}
  6212.   TCM_SETITEM             = TCM_SETITEMW;
  6213.   {$EXTERNALSYM TCM_INSERTITEM}
  6214.   TCM_INSERTITEM          = TCM_INSERTITEMW;
  6215. {$ELSE}
  6216.   {$EXTERNALSYM TCM_GETITEM}
  6217.   TCM_GETITEM             = TCM_GETITEMA;
  6218.   {$EXTERNALSYM TCM_SETITEM}
  6219.   TCM_SETITEM             = TCM_SETITEMA;
  6220.   {$EXTERNALSYM TCM_INSERTITEM}
  6221.   TCM_INSERTITEM          = TCM_INSERTITEMA;
  6222. {$ENDIF}
  6223.  
  6224. const
  6225.   {$EXTERNALSYM TCHT_NOWHERE}
  6226.   TCHT_NOWHERE     = $0001;
  6227.   {$EXTERNALSYM TCHT_ONITEMICON}
  6228.   TCHT_ONITEMICON  = $0002;
  6229.   {$EXTERNALSYM TCHT_ONITEMLABEL}
  6230.   TCHT_ONITEMLABEL = $0004;
  6231.   {$EXTERNALSYM TCHT_ONITEM}
  6232.   TCHT_ONITEM      = TCHT_ONITEMICON or TCHT_ONITEMLABEL;
  6233.  
  6234. type
  6235.   PTCHitTestInfo = ^TTCHitTestInfo;
  6236.   {$EXTERNALSYM tagTCHITTESTINFO}
  6237.   tagTCHITTESTINFO = packed record
  6238.     pt: TPoint;
  6239.     flags: UINT;
  6240.   end;
  6241.   {$EXTERNALSYM _TC_HITTESTINFO}
  6242.   _TC_HITTESTINFO = tagTCHITTESTINFO;
  6243.   TTCHitTestInfo = tagTCHITTESTINFO;
  6244.   {$EXTERNALSYM TC_HITTESTINFO}
  6245.   TC_HITTESTINFO = tagTCHITTESTINFO;
  6246.  
  6247.   {$EXTERNALSYM tagTCKEYDOWN}
  6248.   tagTCKEYDOWN = packed record
  6249.     hdr: TNMHDR;
  6250.     wVKey: Word;
  6251.     flags: UINT;
  6252.   end;
  6253.   {$EXTERNALSYM _TC_KEYDOWN}
  6254.   _TC_KEYDOWN = tagTCKEYDOWN;
  6255.   TTCKeyDown = tagTCKEYDOWN;
  6256.   {$EXTERNALSYM TC_KEYDOWN}
  6257.   TC_KEYDOWN = tagTCKEYDOWN;
  6258.  
  6259. const
  6260.   {$EXTERNALSYM TCN_KEYDOWN}
  6261.   TCN_KEYDOWN             = TCN_FIRST - 0;
  6262.   {$EXTERNALSYM TCN_SELCHANGE}
  6263.   TCN_SELCHANGE           = TCN_FIRST - 1;
  6264.   {$EXTERNALSYM TCN_SELCHANGING}
  6265.   TCN_SELCHANGING         = TCN_FIRST - 2;
  6266.   {$EXTERNALSYM TCN_GETOBJECT}
  6267.   TCN_GETOBJECT           = TCN_FIRST - 3;
  6268.  
  6269. {$EXTERNALSYM TabCtrl_HitTest}
  6270. function TabCtrl_HitTest(hwndTC: HWND; pinfo: PTCHitTestInfo): Integer;
  6271. {$EXTERNALSYM TabCtrl_SetItemExtra}
  6272. function TabCtrl_SetItemExtra(hwndTC: HWND; cb: Integer): BOOL;
  6273. {$EXTERNALSYM TabCtrl_AdjustRect}
  6274. function TabCtrl_AdjustRect(hwnd: HWND; bLarger: BOOL; prc: PRect): Integer;
  6275. {$EXTERNALSYM TabCtrl_SetItemSize}
  6276. function TabCtrl_SetItemSize(hwnd: HWND; x, y: Integer): DWORD;
  6277. {$EXTERNALSYM TabCtrl_RemoveImage}
  6278. procedure TabCtrl_RemoveImage(hwnd: HWND; i: Integer);
  6279. {$EXTERNALSYM TabCtrl_SetPadding}
  6280. procedure TabCtrl_SetPadding(hwnd: HWND; cx, cy: Integer);
  6281. {$EXTERNALSYM TabCtrl_GetRowCount}
  6282. function TabCtrl_GetRowCount(hwnd: HWND): Integer;
  6283. {$EXTERNALSYM TabCtrl_GetToolTips}
  6284. function TabCtrl_GetToolTips(wnd: HWND): HWND;
  6285. {$EXTERNALSYM TabCtrl_SetToolTips}
  6286. procedure TabCtrl_SetToolTips(hwnd: HWND; hwndTT: HWND);
  6287. {$EXTERNALSYM TabCtrl_GetCurFocus}
  6288. function TabCtrl_GetCurFocus(hwnd: HWND): Integer;
  6289. {$EXTERNALSYM TabCtrl_SetCurFocus}
  6290. procedure TabCtrl_SetCurFocus(hwnd: HWND; i: Integer);
  6291. {$EXTERNALSYM TabCtrl_SetMinTabWidth}
  6292. function TabCtrl_SetMinTabWidth(hwnd: HWND; x: Integer): Integer;
  6293. {$EXTERNALSYM TabCtrl_DeselectAll}
  6294. procedure TabCtrl_DeselectAll(hwnd: HWND; fExcludeFocus: BOOL);
  6295. {$EXTERNALSYM TabCtrl_HighlightItem}
  6296. function TabCtrl_HighlightItem(hwnd: HWND; i: Integer; fHighlight: WordBool): BOOL;
  6297. {$EXTERNALSYM TabCtrl_SetExtendedStyle}
  6298. function TabCtrl_SetExtendedStyle(hwnd: HWND; dw: DWORD): DWORD;
  6299. {$EXTERNALSYM TabCtrl_GetExtendedStyle}
  6300. function TabCtrl_GetExtendedStyle(hwnd: HWND): DWORD;
  6301. {$EXTERNALSYM TabCtrl_SetUnicodeFormat}
  6302. function TabCtrl_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  6303. {$EXTERNALSYM TabCtrl_GetUnicodeFormat}
  6304. function TabCtrl_GetUnicodeFormat(hwnd: HWND): BOOL;
  6305.  
  6306. { ====== ANIMATE CONTROL ================= }
  6307.  
  6308. const
  6309.   {$EXTERNALSYM ANIMATE_CLASS}
  6310.   ANIMATE_CLASS = 'SysAnimate32';
  6311.  
  6312. const
  6313.   {$EXTERNALSYM ACS_CENTER}
  6314.   ACS_CENTER              = $0001;
  6315.   {$EXTERNALSYM ACS_TRANSPARENT}
  6316.   ACS_TRANSPARENT         = $0002;
  6317.   {$EXTERNALSYM ACS_AUTOPLAY}
  6318.   ACS_AUTOPLAY            = $0004;
  6319.   {$EXTERNALSYM ACS_TIMER}
  6320.   ACS_TIMER               = $0008;  { don't use threads... use timers }
  6321.  
  6322.   {$EXTERNALSYM ACM_OPENA}
  6323.   ACM_OPENA                = WM_USER + 100;
  6324.   {$EXTERNALSYM ACM_OPENW}
  6325.   ACM_OPENW                = WM_USER + 103;
  6326. {$IFDEF UNICODE}
  6327.   {$EXTERNALSYM ACM_OPEN}
  6328.   ACM_OPEN                = ACM_OPENW;
  6329. {$ELSE}
  6330.   {$EXTERNALSYM ACM_OPEN}
  6331.   ACM_OPEN                = ACM_OPENA;
  6332. {$ENDIF}
  6333.  
  6334.   {$EXTERNALSYM ACM_PLAY}
  6335.   ACM_PLAY                = WM_USER + 101;
  6336.   {$EXTERNALSYM ACM_STOP}
  6337.   ACM_STOP                = WM_USER + 102;
  6338.  
  6339.   {$EXTERNALSYM ACN_START}
  6340.   ACN_START               = 1;
  6341.   {$EXTERNALSYM ACN_STOP}
  6342.   ACN_STOP                = 2;
  6343.  
  6344. {$EXTERNALSYM Animate_Create}
  6345. function Animate_Create(hwndP: HWND; id: HMENU; dwStyle: DWORD; hInstance: HINST): HWND;
  6346. {$EXTERNALSYM Animate_Open}
  6347. function Animate_Open(hwnd: HWND; szName: PChar): BOOL;
  6348. {$EXTERNALSYM Animate_OpenEx}
  6349. function Animate_OpenEx(hwnd: HWND; hInst: HINST; szName: PChar): BOOL;
  6350. {$EXTERNALSYM Animate_Play}
  6351. function Animate_Play(hwnd: HWND; from, _to: Word; rep: UINT): BOOL;
  6352. {$EXTERNALSYM Animate_Stop}
  6353. function Animate_Stop(hwnd: HWND): BOOL;
  6354. {$EXTERNALSYM Animate_Close}
  6355. function Animate_Close(hwnd: HWND): BOOL;
  6356. {$EXTERNALSYM Animate_Seek}
  6357. function Animate_Seek(hwnd: HWND; frame: Word): BOOL;
  6358.  
  6359. { ====== MONTHCAL CONTROL ========= }
  6360.  
  6361. const
  6362.   {$EXTERNALSYM MONTHCAL_CLASS}
  6363.   MONTHCAL_CLASS          = 'SysMonthCal32';
  6364.  
  6365. const  
  6366.   // Message constants
  6367.   {$EXTERNALSYM MCM_FIRST}
  6368.   MCM_FIRST             = $1000;
  6369.   {$EXTERNALSYM MCM_GETCURSEL}
  6370.   MCM_GETCURSEL         = MCM_FIRST + 1;
  6371.   {$EXTERNALSYM MCM_SETCURSEL}
  6372.   MCM_SETCURSEL         = MCM_FIRST + 2;
  6373.   {$EXTERNALSYM MCM_GETMAXSELCOUNT}
  6374.   MCM_GETMAXSELCOUNT    = MCM_FIRST + 3;
  6375.   {$EXTERNALSYM MCM_SETMAXSELCOUNT}
  6376.   MCM_SETMAXSELCOUNT    = MCM_FIRST + 4;
  6377.   {$EXTERNALSYM MCM_GETSELRANGE}
  6378.   MCM_GETSELRANGE       = MCM_FIRST + 5;
  6379.   {$EXTERNALSYM MCM_SETSELRANGE}
  6380.   MCM_SETSELRANGE       = MCM_FIRST + 6;
  6381.   {$EXTERNALSYM MCM_GETMONTHRANGE}
  6382.   MCM_GETMONTHRANGE     = MCM_FIRST + 7;
  6383.   {$EXTERNALSYM MCM_SETDAYSTATE}
  6384.   MCM_SETDAYSTATE       = MCM_FIRST + 8;
  6385.   {$EXTERNALSYM MCM_GETMINREQRECT}
  6386.   MCM_GETMINREQRECT     = MCM_FIRST + 9;
  6387.   {$EXTERNALSYM MCM_SETCOLOR}
  6388.   MCM_SETCOLOR          = MCM_FIRST + 10;
  6389.   {$EXTERNALSYM MCM_GETCOLOR}
  6390.   MCM_GETCOLOR          = MCM_FIRST + 11;
  6391.   {$EXTERNALSYM MCM_SETTODAY}
  6392.   MCM_SETTODAY          = MCM_FIRST + 12;
  6393.   {$EXTERNALSYM MCM_GETTODAY}
  6394.   MCM_GETTODAY          = MCM_FIRST + 13;
  6395.   {$EXTERNALSYM MCM_HITTEST}
  6396.   MCM_HITTEST           = MCM_FIRST + 14;
  6397.   {$EXTERNALSYM MCM_SETFIRSTDAYOFWEEK}
  6398.   MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15;
  6399.   {$EXTERNALSYM MCM_GETFIRSTDAYOFWEEK}
  6400.   MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16;
  6401.   {$EXTERNALSYM MCM_GETRANGE}
  6402.   MCM_GETRANGE          = MCM_FIRST + 17;
  6403.   {$EXTERNALSYM MCM_SETRANGE}
  6404.   MCM_SETRANGE          = MCM_FIRST + 18;
  6405.   {$EXTERNALSYM MCM_GETMONTHDELTA}
  6406.   MCM_GETMONTHDELTA     = MCM_FIRST + 19;
  6407.   {$EXTERNALSYM MCM_SETMONTHDELTA}
  6408.   MCM_SETMONTHDELTA     = MCM_FIRST + 20;
  6409.   {$EXTERNALSYM MCM_GETMAXTODAYWIDTH}
  6410.   MCM_GETMAXTODAYWIDTH  = MCM_FIRST + 21;
  6411.   {$EXTERNALSYM MCM_SETUNICODEFORMAT}
  6412.   MCM_SETUNICODEFORMAT  = CCM_SETUNICODEFORMAT;
  6413.   {$EXTERNALSYM MCM_GETUNICODEFORMAT}
  6414.   MCM_GETUNICODEFORMAT  = CCM_GETUNICODEFORMAT;
  6415.  
  6416.   // Hit test flags
  6417.   {$EXTERNALSYM MCHT_TITLE}
  6418.   MCHT_TITLE            = $00010000;
  6419.   {$EXTERNALSYM MCHT_CALENDAR}
  6420.   MCHT_CALENDAR         = $00020000;
  6421.   {$EXTERNALSYM MCHT_TODAYLINK}
  6422.   MCHT_TODAYLINK        = $00030000;
  6423.   {$EXTERNALSYM MCHT_NEXT}
  6424.   MCHT_NEXT             = $01000000;  // these indicate that hitting
  6425.   {$EXTERNALSYM MCHT_PREV}
  6426.   MCHT_PREV             = $02000000;  // here will go to the next/prev month
  6427.   {$EXTERNALSYM MCHT_NOWHERE}
  6428.   MCHT_NOWHERE          = $00000000;
  6429.   {$EXTERNALSYM MCHT_TITLEBK}
  6430.   MCHT_TITLEBK          = MCHT_TITLE;
  6431.   {$EXTERNALSYM MCHT_TITLEMONTH}
  6432.   MCHT_TITLEMONTH       = MCHT_TITLE or $0001;
  6433.   {$EXTERNALSYM MCHT_TITLEYEAR}
  6434.   MCHT_TITLEYEAR        = MCHT_TITLE or $0002;
  6435.   {$EXTERNALSYM MCHT_TITLEBTNNEXT}
  6436.   MCHT_TITLEBTNNEXT     = MCHT_TITLE or MCHT_NEXT or $0003;
  6437.   {$EXTERNALSYM MCHT_TITLEBTNPREV}
  6438.   MCHT_TITLEBTNPREV     = MCHT_TITLE or MCHT_PREV or $0003;
  6439.   {$EXTERNALSYM MCHT_CALENDARBK}
  6440.   MCHT_CALENDARBK       = MCHT_CALENDAR;
  6441.   {$EXTERNALSYM MCHT_CALENDARDATE}
  6442.   MCHT_CALENDARDATE     = MCHT_CALENDAR or $0001;
  6443.   {$EXTERNALSYM MCHT_CALENDARDATENEXT}
  6444.   MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE or MCHT_NEXT;
  6445.   {$EXTERNALSYM MCHT_CALENDARDATEPREV}
  6446.   MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE or MCHT_PREV;
  6447.   {$EXTERNALSYM MCHT_CALENDARDAY}
  6448.   MCHT_CALENDARDAY      = MCHT_CALENDAR or $0002;
  6449.   {$EXTERNALSYM MCHT_CALENDARWEEKNUM}
  6450.   MCHT_CALENDARWEEKNUM  = MCHT_CALENDAR or $0003;
  6451.  
  6452.   // Color codes
  6453.   {$EXTERNALSYM MCSC_BACKGROUND}
  6454.   MCSC_BACKGROUND       = 0;   // the background color (between months)
  6455.   {$EXTERNALSYM MCSC_TEXT}
  6456.   MCSC_TEXT             = 1;   // the dates
  6457.   {$EXTERNALSYM MCSC_TITLEBK}
  6458.   MCSC_TITLEBK          = 2;   // background of the title
  6459.   {$EXTERNALSYM MCSC_TITLETEXT}
  6460.   MCSC_TITLETEXT        = 3;
  6461.   {$EXTERNALSYM MCSC_MONTHBK}
  6462.   MCSC_MONTHBK          = 4;   // background within the month cal
  6463.   {$EXTERNALSYM MCSC_TRAILINGTEXT}
  6464.   MCSC_TRAILINGTEXT     = 5;   // the text color of header & trailing days
  6465.  
  6466.   // Notification codes
  6467.   {$EXTERNALSYM MCN_SELCHANGE}
  6468.   MCN_SELCHANGE         = MCN_FIRST + 1;
  6469.   {$EXTERNALSYM MCN_GETDAYSTATE}
  6470.   MCN_GETDAYSTATE       = MCN_FIRST + 3;
  6471.   {$EXTERNALSYM MCN_SELECT}
  6472.   MCN_SELECT            = MCN_FIRST + 4;
  6473.  
  6474.   // Style flags
  6475.   {$EXTERNALSYM MCS_DAYSTATE}
  6476.   MCS_DAYSTATE          = $0001;
  6477.   {$EXTERNALSYM MCS_MULTISELECT}
  6478.   MCS_MULTISELECT       = $0002;
  6479.   {$EXTERNALSYM MCS_WEEKNUMBERS}
  6480.   MCS_WEEKNUMBERS       = $0004;
  6481.   MCS_NOTODAY_PRE_IE4   = $0008;
  6482.   {$EXTERNALSYM MCS_NOTODAYCIRCLE}
  6483.   MCS_NOTODAYCIRCLE     = $0008;
  6484.   {$EXTERNALSYM MCS_NOTODAY}
  6485.   MCS_NOTODAY           = $0010;
  6486.  
  6487.   {$EXTERNALSYM GMR_VISIBLE}
  6488.   GMR_VISIBLE           = 0;       // visible portion of display
  6489.   {$EXTERNALSYM GMR_DAYSTATE}
  6490.   GMR_DAYSTATE          = 1;       // above plus the grayed out parts of
  6491.                                    // partially displayed months
  6492.                                    
  6493. type
  6494.   // bit-packed array of "bold" info for a month
  6495.   // if a bit is on, that day is drawn bold
  6496.   {$EXTERNALSYM MONTHDAYSTATE}
  6497.   MONTHDAYSTATE = DWORD;
  6498.   PMonthDayState = ^TMonthDayState;
  6499.   TMonthDayState = MONTHDAYSTATE;
  6500.  
  6501.   {$EXTERNALSYM MCHITTESTINFO}
  6502.   MCHITTESTINFO = packed record
  6503.     cbSize: UINT;
  6504.     pt: TPoint;
  6505.     uHit: UINT;      // out param
  6506.     st: TSystemTime;
  6507.   end;
  6508.   PMCHitTestInfo = ^TMCHitTestInfo;
  6509.   TMCHitTestInfo = MCHITTESTINFO;
  6510.  
  6511.   // MCN_SELCHANGE is sent whenever the currently displayed date changes
  6512.   // via month change, year change, keyboard navigation, prev/next button
  6513.   {$EXTERNALSYM tagNMSELCHANGE}
  6514.   tagNMSELCHANGE = packed record
  6515.     nmhdr: TNmHdr;  // this must be first, so we don't break WM_NOTIFY
  6516.     stSelStart: TSystemTime;
  6517.     stSelEnd: TSystemTime;
  6518.   end;
  6519.   PNMSelChange = ^TNMSelChange;
  6520.   TNMSelChange = tagNMSELCHANGE;
  6521.  
  6522.   // MCN_GETDAYSTATE is sent for MCS_DAYSTATE controls whenever new daystate
  6523.   // information is needed (month or year scroll) to draw bolding information.
  6524.   // The app must fill in cDayState months worth of information starting from
  6525.   // stStart date. The app may fill in the array at prgDayState or change
  6526.   // prgDayState to point to a different array out of which the information
  6527.   // will be copied. (similar to tooltips)
  6528.   {$EXTERNALSYM tagNMDAYSTATE}
  6529.   tagNMDAYSTATE = packed record
  6530.     nmhdr: TNmHdr;  // this must be first, so we don't break WM_NOTIFY
  6531.     stStart: TSystemTime;
  6532.     cDayState: Integer;
  6533.     prgDayState: PMonthDayState; // points to cDayState TMONTHDAYSTATEs
  6534.   end;
  6535.   PNMDayState = ^TNMDayState;
  6536.   TNMDayState = tagNMDAYSTATE;
  6537.  
  6538.   // MCN_SELECT is sent whenever a selection has occured (via mouse or keyboard)
  6539.   {$EXTERNALSYM NMSELECT}
  6540.   NMSELECT = tagNMSELCHANGE;
  6541.   PNMSelect = ^TNMSelect;
  6542.   TNMSelect = NMSELECT;
  6543.  
  6544. //   returns FALSE if MCS_MULTISELECT
  6545. //   returns TRUE and sets *pst to the currently selected date otherwise
  6546. {$EXTERNALSYM MonthCal_GetCurSel}
  6547. function MonthCal_GetCurSel(hmc: HWND; var pst: TSystemTime): BOOL;
  6548.  
  6549. //   returns FALSE if MCS_MULTISELECT
  6550. //   returns TURE and sets the currently selected date to *pst otherwise
  6551. {$EXTERNALSYM MonthCal_SetCurSel}
  6552. function MonthCal_SetCurSel(hmc: HWND; const pst: TSystemTime): BOOL;
  6553.  
  6554. //   returns the maximum number of selectable days allowed
  6555. {$EXTERNALSYM MonthCal_GetMaxSelCount}
  6556. function MonthCal_GetMaxSelCount(hmc: HWND): DWORD;
  6557.  
  6558. //   sets the max number days that can be selected iff MCS_MULTISELECT
  6559. {$EXTERNALSYM MonthCal_SetMaxSelCount}
  6560. function MonthCal_SetMaxSelCount(hmc: HWND; n: UINT): BOOL;
  6561.  
  6562. //   sets rgst[0] to the first day of the selection range
  6563. //   sets rgst[1] to the last day of the selection range
  6564. {$EXTERNALSYM MonthCal_GetSelRange}
  6565. function MonthCal_GetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  6566.  
  6567. //   selects the range of days from rgst[0] to rgst[1]
  6568. {$EXTERNALSYM MonthCal_SetSelRange}
  6569. function MonthCal_SetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  6570.  
  6571. //   if rgst specified, sets rgst[0] to the starting date and
  6572. //      and rgst[1] to the ending date of the the selectable (non-grayed)
  6573. //      days if GMR_VISIBLE or all the displayed days (including grayed)
  6574. //      if GMR_DAYSTATE.
  6575. //   returns the number of months spanned by the above range.
  6576. {$EXTERNALSYM MonthCal_GetMonthRange}
  6577. function MonthCal_GetMonthRange(hmc: HWND; gmr: DWORD; rgst: PSystemTime): DWORD;
  6578.  
  6579. //   cbds is the count of DAYSTATE items in rgds and it must be equal
  6580. //   to the value returned from MonthCal_GetMonthRange(hmc, GMR_DAYSTATE, NULL)
  6581. //   This sets the DAYSTATE bits for each month (grayed and non-grayed
  6582. //   days) displayed in the calendar. The first bit in a month's DAYSTATE
  6583. //   corresponts to bolding day 1, the second bit affects day 2, etc.
  6584. {$EXTERNALSYM MonthCal_SetDayState}
  6585. function MonthCal_SetDayState(hmc: HWND; cbds: Integer; const rgds: TNMDayState): BOOL;
  6586.  
  6587. //   sets prc the minimal size needed to display one month
  6588. {$EXTERNALSYM MonthCal_GetMinReqRect}
  6589. function MonthCal_GetMinReqRect(hmc: HWND; var prc: TRect): BOOL;
  6590.  
  6591. // set what day is "today"   send NULL to revert back to real date
  6592. {$EXTERNALSYM MonthCal_SetToday}
  6593. function MonthCal_SetToday(hmc: HWND; const pst: TSystemTime): BOOL;
  6594.  
  6595. // get what day is "today"
  6596. // returns BOOL for success/failure
  6597. {$EXTERNALSYM MonthCal_GetToday}
  6598. function MonthCal_GetToday(hmc: HWND; var pst: TSystemTime): BOOL;
  6599.  
  6600. // determine what pinfo->pt is over
  6601. {$EXTERNALSYM MonthCal_HitTest}
  6602. function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD;
  6603.  
  6604. // set colors to draw control with -- see MCSC_ bits below
  6605. {$EXTERNALSYM MonthCal_SetColor}
  6606. function MonthCal_SetColor(hmc: HWND; iColor: Integer; clr: TColorRef): BOOL;
  6607.  
  6608. {$EXTERNALSYM MonthCal_GetColor}
  6609. function MonthCal_GetColor(hmc: HWND; iColor: Integer): TColorRef;
  6610.  
  6611. // set first day of week to iDay:
  6612. // 0 for Monday, 1 for Tuesday, ..., 6 for Sunday
  6613. // -1 for means use locale info
  6614. {$EXTERNALSYM MonthCal_SetFirstDayOfWeek}
  6615. function MonthCal_SetFirstDayOfWeek(hmc: HWND; iDay: Integer): BOOL;
  6616.  
  6617. // DWORD result...  low word has the day.  high word is bool if this is app set
  6618. // or not (FALSE == using locale info)
  6619. {$EXTERNALSYM MonthCal_GetFirstDayOfWeek}
  6620. function MonthCal_GetFirstDayOfWeek(hmc: HWND): Integer;
  6621.  
  6622. //   modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  6623. //   modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  6624. //   returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
  6625. {$EXTERNALSYM MonthCal_GetRange}
  6626. function MonthCal_GetRange(hmc: HWND; rgst: PSystemTime): DWORD;
  6627.  
  6628. //   if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  6629. //   if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  6630. //   returns TRUE on success, FALSE on error (such as invalid parameters)
  6631. {$EXTERNALSYM Monthcal_SetRange}
  6632. function Monthcal_SetRange(hmc: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  6633.  
  6634. //   returns the number of months one click on a next/prev button moves by
  6635. {$EXTERNALSYM MonthCal_GetMonthDelta}
  6636. function MonthCal_GetMonthDelta(hmc: HWND): Integer;
  6637.  
  6638. //   sets the month delta to n. n = 0 reverts to moving by a page of months
  6639. //   returns the previous value of n.
  6640. {$EXTERNALSYM MonthCal_SetMonthDelta}
  6641. function MonthCal_SetMonthDelta(hmc: HWND; n: Integer): Integer;
  6642.  
  6643. //   sets *psz to the maximum width/height of the "Today" string displayed
  6644. //   at the bottom of the calendar (as long as MCS_NOTODAY is not specified)
  6645. {$EXTERNALSYM MonthCal_GetMaxTodayWidth}
  6646. function MonthCal_GetMaxTodayWidth(hmc: HWND): DWORD;
  6647.  
  6648. {$EXTERNALSYM MonthCal_SetUnicodeFormat}
  6649. function MonthCal_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  6650.  
  6651. {$EXTERNALSYM MonthCal_GetUnicodeFormat}
  6652. function MonthCal_GetUnicodeFormat(hwnd: HWND): BOOL;
  6653.  
  6654. { ====== DATETIMEPICK CONTROL =============== }
  6655.  
  6656. const
  6657.   {$EXTERNALSYM DATETIMEPICK_CLASS}
  6658.   DATETIMEPICK_CLASS = 'SysDateTimePick32';
  6659.  
  6660.   // Message constants
  6661.   {$EXTERNALSYM DTM_FIRST}
  6662.   DTM_FIRST         = $1000;
  6663.   {$EXTERNALSYM DTM_GETSYSTEMTIME}
  6664.   DTM_GETSYSTEMTIME = DTM_FIRST + 1;
  6665.   {$EXTERNALSYM DTM_SETSYSTEMTIME}
  6666.   DTM_SETSYSTEMTIME = DTM_FIRST + 2;
  6667.   {$EXTERNALSYM DTM_GETRANGE}
  6668.   DTM_GETRANGE      = DTM_FIRST + 3;
  6669.   {$EXTERNALSYM DTM_SETRANGE}
  6670.   DTM_SETRANGE      = DTM_FIRST + 4;
  6671.   {$EXTERNALSYM DTM_SETFORMATA}
  6672.   DTM_SETFORMATA    = DTM_FIRST + 5;
  6673.   {$EXTERNALSYM DTM_SETMCCOLOR}
  6674.   DTM_SETMCCOLOR    = DTM_FIRST + 6;
  6675.   {$EXTERNALSYM DTM_GETMCCOLOR}
  6676.   DTM_GETMCCOLOR    = DTM_FIRST + 7;
  6677.   {$EXTERNALSYM DTM_GETMONTHCAL}
  6678.   DTM_GETMONTHCAL   = DTM_FIRST + 8;
  6679.   {$EXTERNALSYM DTM_SETMCFONT}
  6680.   DTM_SETMCFONT     = DTM_FIRST + 9;
  6681.   {$EXTERNALSYM DTM_GETMCFONT}
  6682.   DTM_GETMCFONT     = DTM_FIRST + 10;
  6683.   {$EXTERNALSYM DTM_SETFORMATW}
  6684.   DTM_SETFORMATW    = DTM_FIRST + 50;
  6685.   {$EXTERNALSYM DTM_SETFORMAT}
  6686.   DTM_SETFORMAT     = DTM_SETFORMATA;
  6687.  
  6688.   // Style Flags
  6689.   {$EXTERNALSYM DTS_UPDOWN}
  6690.   DTS_UPDOWN          = $0001;  // use UPDOWN instead of MONTHCAL
  6691.   {$EXTERNALSYM DTS_SHOWNONE}
  6692.   DTS_SHOWNONE        = $0002;  // allow a NONE selection
  6693.   {$EXTERNALSYM DTS_SHORTDATEFORMAT}
  6694.   DTS_SHORTDATEFORMAT = $0000;  // use the short date format
  6695.                                 // (app must forward WM_WININICHANGE messages)
  6696.   {$EXTERNALSYM DTS_LONGDATEFORMAT}
  6697.   DTS_LONGDATEFORMAT  = $0004;  // use the long date format
  6698.                                 // (app must forward WM_WININICHANGE messages)
  6699.   {$EXTERNALSYM DTS_TIMEFORMAT}
  6700.   DTS_TIMEFORMAT      = $0009;  // use the time format
  6701.                                 // (app must forward WM_WININICHANGE messages)
  6702.   {$EXTERNALSYM DTS_APPCANPARSE}
  6703.   DTS_APPCANPARSE     = $0010;  // allow user entered strings
  6704.                                 // (app MUST respond to DTN_USERSTRING)
  6705.   {$EXTERNALSYM DTS_RIGHTALIGN}
  6706.   DTS_RIGHTALIGN      = $0020;  // right-align popup instead of left-align it
  6707.  
  6708.   // Notification codes
  6709.   {$EXTERNALSYM DTN_DATETIMECHANGE}
  6710.   DTN_DATETIMECHANGE = DTN_FIRST + 1;  // the systemtime has changed
  6711.   {$EXTERNALSYM DTN_USERSTRINGA}
  6712.   DTN_USERSTRINGA    = DTN_FIRST + 2;  // the user has entered a string
  6713.   {$EXTERNALSYM DTN_USERSTRINGW}
  6714.   DTN_USERSTRINGW    = DTN_FIRST + 15;
  6715.   {$EXTERNALSYM DTN_WMKEYDOWNA}
  6716.   DTN_WMKEYDOWNA     = DTN_FIRST + 3;  // modify keydown on app format field (X)
  6717.   {$EXTERNALSYM DTN_WMKEYDOWNW}
  6718.   DTN_WMKEYDOWNW     = DTN_FIRST + 16;
  6719.   {$EXTERNALSYM DTN_FORMATA}
  6720.   DTN_FORMATA        = DTN_FIRST + 4;  // query display for app format field (X)
  6721.   {$EXTERNALSYM DTN_FORMATW}
  6722.   DTN_FORMATW        = DTN_FIRST + 17;
  6723.   {$EXTERNALSYM DTN_FORMATQUERYA}
  6724.   DTN_FORMATQUERYA   = DTN_FIRST + 5;  // query formatting info for app format field (X)
  6725.   {$EXTERNALSYM DTN_FORMATQUERYW}
  6726.   DTN_FORMATQUERYW   = DTN_FIRST + 18;
  6727.   {$EXTERNALSYM DTN_DROPDOWN}
  6728.   DTN_DROPDOWN       = DTN_FIRST + 6;  // MonthCal has dropped down
  6729.   {$EXTERNALSYM DTN_CLOSEUP}
  6730.   DTN_CLOSEUP        = DTN_FIRST + 7;  // MonthCal is popping up
  6731. {$IFDEF UNICODE}
  6732.   {$EXTERNALSYM DTN_USERSTRING}
  6733.   DTN_USERSTRING     = DTN_USERSTRINGW;
  6734.   {$EXTERNALSYM DTN_WMKEYDOWN}
  6735.   DTN_WMKEYDOWN      = DTN_WMKEYDOWNW;
  6736.   {$EXTERNALSYM DTN_FORMAT}
  6737.   DTN_FORMAT         = DTN_FORMATW;
  6738.   {$EXTERNALSYM DTN_FORMATQUERY}
  6739.   DTN_FORMATQUERY    = DTN_FORMATQUERYW;
  6740. {$ELSE}
  6741.   {$EXTERNALSYM DTN_USERSTRING}
  6742.   DTN_USERSTRING     = DTN_USERSTRINGA;
  6743.   {$EXTERNALSYM DTN_WMKEYDOWN}
  6744.   DTN_WMKEYDOWN      = DTN_WMKEYDOWNA;
  6745.   {$EXTERNALSYM DTN_FORMAT}
  6746.   DTN_FORMAT         = DTN_FORMATA;
  6747.   {$EXTERNALSYM DTN_FORMATQUERY}
  6748.   DTN_FORMATQUERY    = DTN_FORMATQUERYA;
  6749. {$ENDIF}
  6750.  
  6751.   // Ranges
  6752.   {$EXTERNALSYM GDTR_MIN}
  6753.   GDTR_MIN = $0001;
  6754.   {$EXTERNALSYM GDTR_MAX}
  6755.   GDTR_MAX = $0002;
  6756.  
  6757.   // Return Values
  6758.   {$EXTERNALSYM GDT_ERROR}
  6759.   GDT_ERROR = -1;
  6760.   {$EXTERNALSYM GDT_VALID}
  6761.   GDT_VALID = 0;
  6762.   {$EXTERNALSYM GDT_NONE}
  6763.   GDT_NONE  = 1;
  6764.  
  6765. type
  6766.   {$EXTERNALSYM tagNMDATETIMECHANGE}
  6767.   tagNMDATETIMECHANGE = packed record
  6768.     nmhdr: TNmHdr;
  6769.     dwFlags: DWORD;         // GDT_VALID or GDT_NONE
  6770.     st: TSystemTime;        // valid iff dwFlags = GDT_VALID
  6771.   end;
  6772.   PNMDateTimeChange = ^TNMDateTimeChange;
  6773.   TNMDateTimeChange = tagNMDATETIMECHANGE;
  6774.  
  6775.   {$EXTERNALSYM tagNMDATETIMESTRINGA}
  6776.   tagNMDATETIMESTRINGA = packed record
  6777.     nmhdr: TNmHdr;
  6778.     pszUserString: PAnsiChar;     // string user entered
  6779.     st: TSystemTime;           // app fills this in
  6780.     dwFlags: DWORD;            // GDT_VALID or GDT_NONE
  6781.   end;
  6782.   {$EXTERNALSYM tagNMDATETIMESTRINGW}
  6783.   tagNMDATETIMESTRINGW = packed record
  6784.     nmhdr: TNmHdr;
  6785.     pszUserString: PWideChar;     // string user entered
  6786.     st: TSystemTime;           // app fills this in
  6787.     dwFlags: DWORD;            // GDT_VALID or GDT_NONE
  6788.   end;
  6789.   {$EXTERNALSYM tagNMDATETIMESTRING}
  6790.   tagNMDATETIMESTRING = tagNMDATETIMESTRINGA;
  6791.   PNMDateTimeStringA = ^TNMDateTimeStringA;
  6792.   PNMDateTimeStringW = ^TNMDateTimeStringW;
  6793.   PNMDateTimeString = PNMDateTimeStringA;
  6794.   TNMDateTimeStringA = tagNMDATETIMESTRINGA;
  6795.   TNMDateTimeStringW = tagNMDATETIMESTRINGW;
  6796.   TNMDateTimeString = TNMDateTimeStringA;
  6797.  
  6798.   {$EXTERNALSYM tagNMDATETIMEWMKEYDOWNA}
  6799.   tagNMDATETIMEWMKEYDOWNA = packed record
  6800.     nmhdr: TNmHdr;
  6801.     nVirtKey: Integer; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  6802.     pszFormat: PAnsiChar; // format substring
  6803.     st: TSystemTime;   // current systemtime, app should modify based on key
  6804.   end;
  6805.   {$EXTERNALSYM tagNMDATETIMEWMKEYDOWNW}
  6806.   tagNMDATETIMEWMKEYDOWNW = packed record
  6807.     nmhdr: TNmHdr;
  6808.     nVirtKey: Integer; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  6809.     pszFormat: PWideChar; // format substring
  6810.     st: TSystemTime;   // current systemtime, app should modify based on key
  6811.   end;
  6812.   {$EXTERNALSYM tagNMDATETIMEWMKEYDOWN}
  6813.   tagNMDATETIMEWMKEYDOWN = tagNMDATETIMEWMKEYDOWNA;
  6814.   PNMDateTimeWMKeyDownA = ^TNMDateTimeWMKeyDownA;
  6815.   PNMDateTimeWMKeyDownW = ^TNMDateTimeWMKeyDownW;
  6816.   PNMDateTimeWMKeyDown = PNMDateTimeWMKeyDownA;
  6817.   TNMDateTimeWMKeyDownA = tagNMDATETIMEWMKEYDOWNA;
  6818.   TNMDateTimeWMKeyDownW = tagNMDATETIMEWMKEYDOWNW;
  6819.   TNMDateTimeWMKeyDown = TNMDateTimeWMKeyDownA;
  6820.  
  6821.   {$EXTERNALSYM tagNMDATETIMEFORMATA}
  6822.   tagNMDATETIMEFORMATA = packed record
  6823.     nmhdr: TNmHdr;
  6824.     pszFormat: PAnsiChar;                // format substring
  6825.     st: TSystemTime;                  // current systemtime
  6826.     pszDisplay: PAnsiChar;               // string to display
  6827.     szDisplay: array[0..63] of AnsiChar; // buffer pszDisplay originally points at
  6828.   end;
  6829.   {$EXTERNALSYM tagNMDATETIMEFORMATW}
  6830.   tagNMDATETIMEFORMATW = packed record
  6831.     nmhdr: TNmHdr;
  6832.     pszFormat: PWideChar;                // format substring
  6833.     st: TSystemTime;                  // current systemtime
  6834.     pszDisplay: PWideChar;               // string to display
  6835.     szDisplay: array[0..63] of WideChar; // buffer pszDisplay originally points at
  6836.   end;
  6837.   {$EXTERNALSYM tagNMDATETIMEFORMAT}
  6838.   tagNMDATETIMEFORMAT = tagNMDATETIMEFORMATA;
  6839.   PNMDateTimeFormatA = ^TNMDateTimeFormatA;
  6840.   PNMDateTimeFormatW = ^TNMDateTimeFormatW;
  6841.   PNMDateTimeFormat = PNMDateTimeFormatA;
  6842.   TNMDateTimeFormatA = tagNMDATETIMEFORMATA;
  6843.   TNMDateTimeFormatW = tagNMDATETIMEFORMATW;
  6844.   TNMDateTimeFormat = TNMDateTimeFormatA;
  6845.  
  6846.   {$EXTERNALSYM tagNMDATETIMEFORMATQUERYA}
  6847.   tagNMDATETIMEFORMATQUERYA = packed record
  6848.     nmhdr: TNmHdr;
  6849.     pszFormat: PAnsiChar; // format substring
  6850.     szMax: TSize;      // max bounding rectangle app will use for this format string
  6851.   end;
  6852.   {$EXTERNALSYM tagNMDATETIMEFORMATQUERYW}
  6853.   tagNMDATETIMEFORMATQUERYW = packed record
  6854.     nmhdr: TNmHdr;
  6855.     pszFormat: PWideChar; // format substring
  6856.     szMax: TSize;      // max bounding rectangle app will use for this format string
  6857.   end;
  6858.   {$EXTERNALSYM tagNMDATETIMEFORMATQUERY}
  6859.   tagNMDATETIMEFORMATQUERY = tagNMDATETIMEFORMATQUERYA;
  6860.   PNMDateTimeFormatQueryA = ^TNMDateTimeFormatQueryA;
  6861.   PNMDateTimeFormatQueryW = ^TNMDateTimeFormatQueryW;
  6862.   PNMDateTimeFormatQuery = PNMDateTimeFormatQueryA;
  6863.   TNMDateTimeFormatQueryA = tagNMDATETIMEFORMATQUERYA;
  6864.   TNMDateTimeFormatQueryW = tagNMDATETIMEFORMATQUERYW;
  6865.   TNMDateTimeFormatQuery = TNMDateTimeFormatQueryA;
  6866.  
  6867. //   returns GDT_NONE if "none" is selected (DTS_SHOWNONE only)
  6868. //   returns GDT_VALID and modifies pst to be the currently selected value
  6869. {$EXTERNALSYM DateTime_GetSystemTime}
  6870. function DateTime_GetSystemTime(hdp: HWND; var pst: TSystemTime): DWORD;
  6871.  
  6872. //   if gd = GDT_NONE, sets datetimepick to None (DTS_SHOWNONE only)
  6873. //   if gd = GDT_VALID, sets datetimepick to pst
  6874. //   returns TRUE on success, FALSE on error (such as bad params)
  6875. {$EXTERNALSYM DateTime_SetSystemTime}
  6876. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;
  6877.  
  6878. //   modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  6879. //   modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  6880. //   returns GDTR_MIN or GDTR_MAX if there is a minimum or maximum limit
  6881. {$EXTERNALSYM DateTime_GetRange}
  6882. function DateTime_GetRange(hdp: HWND; rgst: PSystemTime): DWORD;
  6883.  
  6884. //   if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  6885. //   if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  6886. //   returns TRUE on success, FALSE on error (such as invalid parameters)
  6887. {$EXTERNALSYM DateTime_SetRange}
  6888. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  6889.  
  6890. //   sets the display formatting string to sz (see GetDateFormat and GetTimeFormat for valid formatting chars)
  6891. //   NOTE: 'X' is a valid formatting character which indicates that the application
  6892. //   will determine how to display information. Such apps must support DTN_WMKEYDOWN,
  6893. //   DTN_FORMAT, and DTN_FORMATQUERY.
  6894. {$EXTERNALSYM DateTime_SetFormatA}
  6895. function DateTime_SetFormatA(hdp: HWND; sz: PAnsiChar): BOOL;
  6896. {$EXTERNALSYM DateTime_SetFormatW}
  6897. function DateTime_SetFormatW(hdp: HWND; sz: PWideChar): BOOL;
  6898. {$EXTERNALSYM DateTime_SetFormat}
  6899. function DateTime_SetFormat(hdp: HWND; sz: PChar): BOOL;
  6900.  
  6901. {$EXTERNALSYM DateTime_SetMonthCalColor}
  6902. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): DWORD;
  6903.  
  6904. {$EXTERNALSYM DateTime_GetMonthCalColor}
  6905. function DateTime_GetMonthCalColor(hdp: HWND; iColor: DWORD): TColorRef;
  6906.  
  6907. // returns the HWND of the MonthCal popup window. Only valid
  6908. // between DTN_DROPDOWN and DTN_CLOSEUP notifications.
  6909. {$EXTERNALSYM DateTime_GetMonthCal}
  6910. function DateTime_GetMonthCal(hdp: HWND): HWND;
  6911.  
  6912. {$EXTERNALSYM DateTime_SetMonthCalFont}
  6913. procedure DateTime_SetMonthCalFont(hdp: HWND; hfont: HFONT; fRedraw: BOOL);
  6914.  
  6915. {$EXTERNALSYM DateTime_GetMonthCalFont}
  6916. function DateTime_GetMonthCalFont(hdp: HWND): HFONT;
  6917.  
  6918. {  ====================== IP Address edit control ============================= }
  6919.  
  6920. const
  6921.   {$EXTERNALSYM WC_IPADDRESS}
  6922.   WC_IPADDRESS         = 'SysIPAddress32';
  6923.  
  6924.   // Messages sent to IPAddress controls
  6925.   {$EXTERNALSYM IPM_CLEARADDRESS}
  6926.   IPM_CLEARADDRESS     = WM_USER+100;  { no parameters }
  6927.   {$EXTERNALSYM IPM_SETADDRESS}
  6928.   IPM_SETADDRESS       = WM_USER+101;  { lparam = TCP/IP address }
  6929.   {$EXTERNALSYM IPM_GETADDRESS}
  6930.   IPM_GETADDRESS       = WM_USER+102;  { lresult = # of non black fields.  lparam = LPDWORD for TCP/IP address }
  6931.   {$EXTERNALSYM IPM_SETRANGE}
  6932.   IPM_SETRANGE         = WM_USER+103;  { wparam = field, lparam = range }
  6933.   {$EXTERNALSYM IPM_SETFOCUS}
  6934.   IPM_SETFOCUS         = WM_USER+104;  { wparam = field }
  6935.   {$EXTERNALSYM IPM_ISBLANK}
  6936.   IPM_ISBLANK          = WM_USER+105;  { no parameters }
  6937.  
  6938.   {$EXTERNALSYM IPN_FIELDCHANGED}
  6939.   IPN_FIELDCHANGED     = IPN_FIRST - 0;
  6940.  
  6941. type
  6942.   {$EXTERNALSYM tagNMIPADDRESS}
  6943.   tagNMIPADDRESS = packed record
  6944.     hdr: NMHDR;
  6945.     iField: Integer;
  6946.     iValue: Integer;
  6947.   end;
  6948.   PNMIPAddress = ^TNMIPAddress;
  6949.   TNMIPAddress = tagNMIPADDRESS;
  6950.  
  6951. { The following is a useful macro for passing the range values in the }
  6952. { IPM_SETRANGE message. }
  6953. {$EXTERNALSYM MAKEIPRANGE}
  6954. function MAKEIPRANGE(low, high: Byte): LPARAM;
  6955.  
  6956. { And this is a useful macro for making the IP Address to be passed }
  6957. { as a LPARAM. }
  6958. {$EXTERNALSYM MAKEIPADDRESS}
  6959. function MAKEIPADDRESS(b1, b2, b3, b4: DWORD): LPARAM;
  6960.  
  6961. { Get individual number }
  6962. {$EXTERNALSYM FIRST_IPADDRESS}
  6963. function FIRST_IPADDRESS(x: DWORD): DWORD;
  6964.  
  6965. {$EXTERNALSYM SECOND_IPADDRESS}
  6966. function SECOND_IPADDRESS(x: DWORD): DWORD;
  6967.  
  6968. {$EXTERNALSYM THIRD_IPADDRESS}
  6969. function THIRD_IPADDRESS(x: DWORD): DWORD;
  6970.  
  6971. {$EXTERNALSYM FOURTH_IPADDRESS}
  6972. function FOURTH_IPADDRESS(x: DWORD): DWORD;
  6973.  
  6974. {  ====================== Pager Control ============================= }
  6975.  
  6976. const
  6977.   { Pager Class Name }
  6978.   {$EXTERNALSYM WC_PAGESCROLLER}
  6979.   WC_PAGESCROLLER               = 'SysPager';
  6980.  
  6981.   { Pager Control Styles }
  6982.   {$EXTERNALSYM PGS_VERT}
  6983.   PGS_VERT                    = $00000000;
  6984.   {$EXTERNALSYM PGS_HORZ}
  6985.   PGS_HORZ                    = $00000001;
  6986.   {$EXTERNALSYM PGS_AUTOSCROLL}
  6987.   PGS_AUTOSCROLL              = $00000002;
  6988.   {$EXTERNALSYM PGS_DRAGNDROP}
  6989.   PGS_DRAGNDROP               = $00000004;
  6990.  
  6991.   { Pager Button State }
  6992.   { The scroll can be in one of the following control State }
  6993.   {$EXTERNALSYM PGF_INVISIBLE}
  6994.   PGF_INVISIBLE        = 0;     { Scroll button is not visible }
  6995.   {$EXTERNALSYM PGF_NORMAL}
  6996.   PGF_NORMAL           = 1;     { Scroll button is in normal state }
  6997.   {$EXTERNALSYM PGF_GRAYED}
  6998.   PGF_GRAYED           = 2;     { Scroll button is in grayed state }
  6999.   {$EXTERNALSYM PGF_DEPRESSED}
  7000.   PGF_DEPRESSED        = 4;     { Scroll button is in depressed state }
  7001.   {$EXTERNALSYM PGF_HOT}
  7002.   PGF_HOT              = 8;     { Scroll button is in hot state }
  7003.  
  7004.   { The following identifiers specifies the button control }
  7005.   {$EXTERNALSYM PGB_TOPORLEFT}
  7006.   PGB_TOPORLEFT           = 0;
  7007.   {$EXTERNALSYM PGB_BOTTOMORRIGHT}
  7008.   PGB_BOTTOMORRIGHT       = 1;
  7009.  
  7010.   { Pager Control  Messages }
  7011.   {$EXTERNALSYM PGM_SETCHILD}
  7012.   PGM_SETCHILD                = PGM_FIRST + 1;   { lParam == hwnd }
  7013.   {$EXTERNALSYM PGM_RECALCSIZE}
  7014.   PGM_RECALCSIZE              = PGM_FIRST + 2;
  7015.   {$EXTERNALSYM PGM_FORWARDMOUSE}
  7016.   PGM_FORWARDMOUSE            = PGM_FIRST + 3;
  7017.   {$EXTERNALSYM PGM_SETBKCOLOR}
  7018.   PGM_SETBKCOLOR              = PGM_FIRST + 4;
  7019.   {$EXTERNALSYM PGM_GETBKCOLOR}
  7020.   PGM_GETBKCOLOR              = PGM_FIRST + 5;
  7021.   {$EXTERNALSYM PGM_SETBORDER}
  7022.   PGM_SETBORDER              = PGM_FIRST + 6;
  7023.   {$EXTERNALSYM PGM_GETBORDER}
  7024.   PGM_GETBORDER              = PGM_FIRST + 7;
  7025.   {$EXTERNALSYM PGM_SETPOS}
  7026.   PGM_SETPOS                  = PGM_FIRST + 8;
  7027.   {$EXTERNALSYM PGM_GETPOS}
  7028.   PGM_GETPOS                  = PGM_FIRST + 9;
  7029.   {$EXTERNALSYM PGM_SETBUTTONSIZE}
  7030.   PGM_SETBUTTONSIZE           = PGM_FIRST + 10;
  7031.   {$EXTERNALSYM PGM_GETBUTTONSIZE}
  7032.   PGM_GETBUTTONSIZE           = PGM_FIRST + 11;
  7033.   {$EXTERNALSYM PGM_GETBUTTONSTATE}
  7034.   PGM_GETBUTTONSTATE          = PGM_FIRST + 12;
  7035.   {$EXTERNALSYM PGM_GETDROPTARGET}
  7036.   PGM_GETDROPTARGET           = CCM_GETDROPTARGET;
  7037.  
  7038. {$EXTERNALSYM Pager_SetChild}
  7039. procedure Pager_SetChild(hwnd: HWND; hwndChild: HWND);
  7040. {$EXTERNALSYM Pager_RecalcSize}
  7041. procedure Pager_RecalcSize(hwnd: HWND);
  7042. {$EXTERNALSYM Pager_ForwardMouse}
  7043. procedure Pager_ForwardMouse(hwnd: HWND; bForward: BOOL);
  7044. {$EXTERNALSYM Pager_SetBkColor}
  7045. function Pager_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  7046. {$EXTERNALSYM Pager_GetBkColor}
  7047. function Pager_GetBkColor(hwnd: HWND): COLORREF;
  7048. {$EXTERNALSYM Pager_SetBorder}
  7049. function Pager_SetBorder(hwnd: HWND; iBorder: Integer): Integer;
  7050. {$EXTERNALSYM Pager_GetBorder}
  7051. function Pager_GetBorder(hwnd: HWND): Integer;
  7052. {$EXTERNALSYM Pager_SetPos}
  7053. function Pager_SetPos(hwnd: HWND; iPos: Integer): Integer;
  7054. {$EXTERNALSYM Pager_GetPos}
  7055. function Pager_GetPos(hwnd: HWND): Integer;
  7056. {$EXTERNALSYM Pager_SetButtonSize}
  7057. function Pager_SetButtonSize(hwnd: HWND; iSize: Integer): Integer;
  7058. {$EXTERNALSYM Pager_GetButtonSize}
  7059. function Pager_GetButtonSize(hwnd: HWND): Integer;
  7060. {$EXTERNALSYM Pager_GetButtonState}
  7061. function Pager_GetButtonState(hwnd: HWND; iButton: Integer): DWORD;
  7062. {$EXTERNALSYM Pager_GetDropTarget}
  7063. procedure Pager_GetDropTarget(hwnd: HWND; ppdt: Pointer{!!});
  7064.  
  7065. const
  7066.   { Pager Control Notification Messages }
  7067.  
  7068.   { PGN_SCROLL Notification Message }
  7069.   {$EXTERNALSYM PGN_SCROLL}
  7070.   PGN_SCROLL              = PGN_FIRST-1;
  7071.  
  7072.   {$EXTERNALSYM PGF_SCROLLUP}
  7073.   PGF_SCROLLUP            = 1;
  7074.   {$EXTERNALSYM PGF_SCROLLDOWN}
  7075.   PGF_SCROLLDOWN          = 2;
  7076.   {$EXTERNALSYM PGF_SCROLLLEFT}
  7077.   PGF_SCROLLLEFT          = 4;
  7078.   {$EXTERNALSYM PGF_SCROLLRIGHT}
  7079.   PGF_SCROLLRIGHT         = 8;
  7080.  
  7081.   { Keys down }
  7082.   {$EXTERNALSYM PGK_SHIFT}
  7083.   PGK_SHIFT               = 1;
  7084.   {$EXTERNALSYM PGK_CONTROL}
  7085.   PGK_CONTROL             = 2;
  7086.   {$EXTERNALSYM PGK_MENU}
  7087.   PGK_MENU                = 4;
  7088.  
  7089. type
  7090.   { This structure is sent along with PGN_SCROLL notifications }
  7091.   {$EXTERNALSYM NMPGSCROLL}
  7092.   NMPGSCROLL = packed record
  7093.     hdr: NMHDR;
  7094.     fwKeys: Word;           { Specifies which keys are down when this notification is send }
  7095.     rcParent: TRect;        { Contains Parent Window Rect }
  7096.     iDir: Integer;          { Scrolling Direction }
  7097.     iXpos: Integer;         { Horizontal scroll position }
  7098.     iYpos: Integer;         { Vertical scroll position }
  7099.     iScroll: Integer;       { [in/out] Amount to scroll }
  7100.   end;
  7101.   PNMPGScroll = ^TNMPGScroll;
  7102.   TNMPGScroll = NMPGSCROLL;
  7103.  
  7104. const
  7105.   { PGN_CALCSIZE Notification Message }
  7106.   {$EXTERNALSYM PGN_CALCSIZE}
  7107.   PGN_CALCSIZE            = PGN_FIRST-2;
  7108.  
  7109.   {$EXTERNALSYM PGF_CALCWIDTH}
  7110.   PGF_CALCWIDTH           = 1;
  7111.   {$EXTERNALSYM PGF_CALCHEIGHT}
  7112.   PGF_CALCHEIGHT          = 2;
  7113.  
  7114. type
  7115.   {$EXTERNALSYM NMPGCALCSIZE}
  7116.   NMPGCALCSIZE = packed record
  7117.     hdr: NMHDR;
  7118.     dwFlag: DWORD;
  7119.     iWidth: Integer;
  7120.     iHeight: Integer;
  7121.   end;
  7122.   PNMPGCalcSize = ^TNMPGCalcSize;
  7123.   TNMPGCalcSize = NMPGCALCSIZE;
  7124.  
  7125. { ======================  Native Font Control ============================== }
  7126.  
  7127. const
  7128.   {$EXTERNALSYM WC_NATIVEFONTCTL}
  7129.   WC_NATIVEFONTCTL            = 'NativeFontCtl';
  7130.  
  7131.   { style definition }
  7132.   {$EXTERNALSYM NFS_EDIT}
  7133.   NFS_EDIT                    = $0001;
  7134.   {$EXTERNALSYM NFS_STATIC}
  7135.   NFS_STATIC                  = $0002;
  7136.   {$EXTERNALSYM NFS_LISTCOMBO}
  7137.   NFS_LISTCOMBO               = $0004;
  7138.   {$EXTERNALSYM NFS_BUTTON}
  7139.   NFS_BUTTON                  = $0008;
  7140.   {$EXTERNALSYM NFS_ALL}
  7141.   NFS_ALL                     = $0010;
  7142.  
  7143. { ====== TrackMouseEvent  ================================================== }
  7144.  
  7145. const
  7146.   {$EXTERNALSYM WM_MOUSEHOVER}
  7147.   WM_MOUSEHOVER                       = $02A1;
  7148.   {$EXTERNALSYM WM_MOUSELEAVE}
  7149.   WM_MOUSELEAVE                       = $02A3;
  7150.  
  7151.   {$EXTERNALSYM TME_HOVER}
  7152.   TME_HOVER           = $00000001;
  7153.   {$EXTERNALSYM TME_LEAVE}
  7154.   TME_LEAVE           = $00000002;
  7155.   {$EXTERNALSYM TME_QUERY}
  7156.   TME_QUERY           = $40000000;
  7157.   {$EXTERNALSYM TME_CANCEL}
  7158.   TME_CANCEL          = $80000000;
  7159.  
  7160.   {$EXTERNALSYM HOVER_DEFAULT}
  7161.   HOVER_DEFAULT       = $FFFFFFFF;
  7162.  
  7163. type
  7164.   {$EXTERNALSYM tagTRACKMOUSEEVENT}
  7165.   tagTRACKMOUSEEVENT = packed record
  7166.     cbSize: DWORD;
  7167.     dwFlags: DWORD;
  7168.     hwndTrack: HWND;
  7169.     dwHoverTime: DWORD;
  7170.   end;
  7171.   PTrackMouseEvent = ^TTrackMouseEvent;
  7172.   TTrackMouseEvent = tagTRACKMOUSEEVENT;
  7173.  
  7174. { Declare _TrackMouseEvent.  This API tries to use the window manager's }
  7175. { implementation of TrackMouseEvent if it is present, otherwise it emulates. }
  7176. {$EXTERNALSYM _TrackMouseEvent}
  7177. function _TrackMouseEvent(lpEventTrack: PTrackMouseEvent): BOOL; stdcall;
  7178.  
  7179. { ====== Flat Scrollbar APIs========================================= }
  7180.  
  7181. const
  7182.   {$EXTERNALSYM WSB_PROP_CYVSCROLL}
  7183.   WSB_PROP_CYVSCROLL      = $00000001;
  7184.   {$EXTERNALSYM WSB_PROP_CXHSCROLL}
  7185.   WSB_PROP_CXHSCROLL      = $00000002;
  7186.   {$EXTERNALSYM WSB_PROP_CYHSCROLL}
  7187.   WSB_PROP_CYHSCROLL      = $00000004;
  7188.   {$EXTERNALSYM WSB_PROP_CXVSCROLL}
  7189.   WSB_PROP_CXVSCROLL      = $00000008;
  7190.   {$EXTERNALSYM WSB_PROP_CXHTHUMB}
  7191.   WSB_PROP_CXHTHUMB       = $00000010;
  7192.   {$EXTERNALSYM WSB_PROP_CYVTHUMB}
  7193.   WSB_PROP_CYVTHUMB       = $00000020;
  7194.   {$EXTERNALSYM WSB_PROP_VBKGCOLOR}
  7195.   WSB_PROP_VBKGCOLOR      = $00000040;
  7196.   {$EXTERNALSYM WSB_PROP_HBKGCOLOR}
  7197.   WSB_PROP_HBKGCOLOR      = $00000080;
  7198.   {$EXTERNALSYM WSB_PROP_VSTYLE}
  7199.   WSB_PROP_VSTYLE         = $00000100;
  7200.   {$EXTERNALSYM WSB_PROP_HSTYLE}
  7201.   WSB_PROP_HSTYLE         = $00000200;
  7202.   {$EXTERNALSYM WSB_PROP_WINSTYLE}
  7203.   WSB_PROP_WINSTYLE       = $00000400;
  7204.   {$EXTERNALSYM WSB_PROP_PALETTE}
  7205.   WSB_PROP_PALETTE        = $00000800;
  7206.   {$EXTERNALSYM WSB_PROP_MASK}
  7207.   WSB_PROP_MASK           = $00000FFF;
  7208.  
  7209.   {$EXTERNALSYM FSB_FLAT_MODE}
  7210.   FSB_FLAT_MODE               = 2;
  7211.   {$EXTERNALSYM FSB_ENCARTA_MODE}
  7212.   FSB_ENCARTA_MODE            = 1;
  7213.   {$EXTERNALSYM FSB_REGULAR_MODE}
  7214.   FSB_REGULAR_MODE            = 0;
  7215.  
  7216. {$EXTERNALSYM FlatSB_EnableScrollBar}
  7217. function FlatSB_EnableScrollBar(p1: HWND; p2: Integer; p3: Integer): Bool; stdcall;
  7218. {$EXTERNALSYM FlatSB_ShowScrollBar}
  7219. function FlatSB_ShowScrollBar(p1: HWND; code: Integer; p3: Bool): Bool; stdcall;
  7220.  
  7221. {$EXTERNALSYM FlatSB_GetScrollRange}
  7222. function FlatSB_GetScrollRange(p1: HWND; code: Integer; p3: PInteger;
  7223.   p4: PInteger): Bool; stdcall;
  7224. {$EXTERNALSYM FlatSB_GetScrollInfo}
  7225. function FlatSB_GetScrollInfo(p1: HWND; code: Integer; p3: PScrollInfo): Bool; stdcall;
  7226. {$EXTERNALSYM FlatSB_GetScrollPos}
  7227. function FlatSB_GetScrollPos(p1: HWND; code: Integer): Integer; stdcall;
  7228. {$EXTERNALSYM FlatSB_GetScrollProp}
  7229. function FlatSB_GetScrollProp(p1: HWND; propIndex: Integer;
  7230.   p3: PInteger): Bool; stdcall;
  7231.  
  7232. {$EXTERNALSYM FlatSB_SetScrollPos}
  7233. function FlatSB_SetScrollPos(p1: HWND; code, pos: Integer;
  7234.   fRedraw: Bool): Integer; stdcall;
  7235. {$EXTERNALSYM FlatSB_SetScrollInfo}
  7236. function FlatSB_SetScrollInfo(p1: HWND; code: Integer; p3: PScrollInfo;
  7237.   fRedraw: Bool): Integer; stdcall;
  7238. {$EXTERNALSYM FlatSB_SetScrollRange}
  7239. function FlatSB_SetScrollRange(p1: HWND; code: Integer; min: Integer;
  7240.   max: Integer; fRedraw: Bool): Integer; stdcall;
  7241. {$EXTERNALSYM FlatSB_SetScrollProp}
  7242. function FlatSB_SetScrollProp(p1: HWND; index: Integer; newValue: Integer;
  7243.   p4: Bool): Bool; stdcall;
  7244.  
  7245. {$EXTERNALSYM InitializeFlatSB}
  7246. function InitializeFlatSB(p1: HWND): Bool; stdcall;
  7247. {$EXTERNALSYM UninitializeFlatSB}
  7248. procedure UninitializeFlatSB(p1: HWND); stdcall;
  7249.  
  7250. implementation
  7251.  
  7252. const
  7253.   cctrl = 'comctl32.dll';
  7254.  
  7255. var
  7256.   ComCtl32DLL: THandle;
  7257.   _InitCommonControlsEx: function(var ICC: TInitCommonControlsEx): Bool stdcall;
  7258.  
  7259. {$EXTERNALSYM InitCommonControls}
  7260. procedure InitCommonControls; external cctrl name 'InitCommonControls';
  7261.  
  7262. procedure InitComCtl;
  7263. begin
  7264.   if ComCtl32DLL = 0 then begin
  7265.     ComCtl32DLL := GetModuleHandle(cctrl);
  7266.     if (ComCtl32DLL >= 0) and (ComCtl32DLL < 32) then
  7267.       ComCtl32DLL := 0
  7268.     else
  7269.       @_InitCommonControlsEx := GetProcAddress(ComCtl32DLL, 'InitCommonControlsEx');
  7270.   end;
  7271. end;
  7272.  
  7273. function InitCommonControlsEx(var ICC: TInitCommonControlsEx): Bool;
  7274. begin
  7275.   if ComCtl32DLL = 0 then InitComCtl;
  7276.   Result := Assigned(_InitCommonControlsEx) and _InitCommonControlsEx(ICC);
  7277. end;
  7278.  
  7279. { Property Sheets }
  7280. {$EXTERNALSYM CreatePropertySheetPageA}
  7281. function CreatePropertySheetPageA; external cctrl name 'CreatePropertySheetPageA';
  7282. {$EXTERNALSYM CreatePropertySheetPageW}
  7283. function CreatePropertySheetPageW; external cctrl name 'CreatePropertySheetPageW';
  7284. {$EXTERNALSYM CreatePropertySheetPage}
  7285. function CreatePropertySheetPage; external cctrl name 'CreatePropertySheetPageA';
  7286. {$EXTERNALSYM DestroyPropertySheetPage}
  7287. function DestroyPropertySheetPage; external cctrl name 'DestroyPropertySheetPage';
  7288. {$EXTERNALSYM PropertySheetA}
  7289. function PropertySheetA; external cctrl name 'PropertySheetA';
  7290. {$EXTERNALSYM PropertySheetW}
  7291. function PropertySheetW; external cctrl name 'PropertySheetW';
  7292. {$EXTERNALSYM PropertySheet}
  7293. function PropertySheet; external cctrl name 'PropertySheetA';
  7294.  
  7295. { Image List }
  7296. {$EXTERNALSYM ImageList_Create}
  7297. function ImageList_Create; external cctrl name 'ImageList_Create';
  7298. {$EXTERNALSYM ImageList_Destroy}
  7299. function ImageList_Destroy; external cctrl name 'ImageList_Destroy';
  7300. {$EXTERNALSYM ImageList_GetImageCount}
  7301. function ImageList_GetImageCount; external cctrl name 'ImageList_GetImageCount';
  7302. {$EXTERNALSYM ImageList_SetImageCount}
  7303. function ImageList_SetImageCount; external cctrl name 'ImageList_SetImageCount';
  7304. {$EXTERNALSYM ImageList_Add}
  7305. function ImageList_Add; external cctrl name 'ImageList_Add';
  7306. {$EXTERNALSYM ImageList_ReplaceIcon}
  7307. function ImageList_ReplaceIcon; external cctrl name 'ImageList_ReplaceIcon';
  7308. {$EXTERNALSYM ImageList_SetBkColor}
  7309. function ImageList_SetBkColor; external cctrl name 'ImageList_SetBkColor';
  7310. {$EXTERNALSYM ImageList_GetBkColor}
  7311. function ImageList_GetBkColor; external cctrl name 'ImageList_GetBkColor';
  7312. {$EXTERNALSYM ImageList_SetOverlayImage}
  7313. function ImageList_SetOverlayImage; external cctrl name 'ImageList_SetOverlayImage';
  7314.  
  7315. {$EXTERNALSYM ImageList_AddIcon}
  7316. function ImageList_AddIcon(ImageList: HIMAGELIST; Icon: HIcon): Integer;
  7317. begin
  7318.   Result := ImageList_ReplaceIcon(ImageList, -1, Icon);
  7319. end;
  7320.  
  7321. {$EXTERNALSYM IndexToOverlayMask}
  7322. function IndexToOverlayMask(Index: Integer): Integer;
  7323. begin
  7324.   Result := Index shl 8;
  7325. end;
  7326.  
  7327. {$EXTERNALSYM ImageList_Draw}
  7328. function ImageList_Draw; external cctrl name 'ImageList_Draw';
  7329.  
  7330. {$EXTERNALSYM ImageList_Replace}
  7331. function ImageList_Replace; external cctrl name 'ImageList_Replace';
  7332. {$EXTERNALSYM ImageList_AddMasked}
  7333. function ImageList_AddMasked; external cctrl name 'ImageList_AddMasked';
  7334. {$EXTERNALSYM ImageList_DrawEx}
  7335. function ImageList_DrawEx; external cctrl name 'ImageList_DrawEx';
  7336. {$EXTERNALSYM ImageList_DrawIndirect}
  7337. function ImageList_DrawIndirect; external cctrl name 'ImageList_DrawIndirect';
  7338. {$EXTERNALSYM ImageList_Remove}
  7339. function ImageList_Remove; external cctrl name 'ImageList_Remove';
  7340. {$EXTERNALSYM ImageList_GetIcon}
  7341. function ImageList_GetIcon; external cctrl name 'ImageList_GetIcon';
  7342. {$EXTERNALSYM ImageList_LoadImageA}
  7343. function ImageList_LoadImageA; external cctrl name 'ImageList_LoadImageA';
  7344. {$EXTERNALSYM ImageList_LoadImageW}
  7345. function ImageList_LoadImageW; external cctrl name 'ImageList_LoadImageW';
  7346. {$EXTERNALSYM ImageList_LoadImage}
  7347. function ImageList_LoadImage; external cctrl name 'ImageList_LoadImageA';
  7348. {$EXTERNALSYM ImageList_Copy}
  7349. function ImageList_Copy; external cctrl name 'ImageList_Copy';
  7350. {$EXTERNALSYM ImageList_BeginDrag}
  7351. function ImageList_BeginDrag; external cctrl name 'ImageList_BeginDrag';
  7352. {$EXTERNALSYM ImageList_EndDrag}
  7353. function ImageList_EndDrag; external cctrl name 'ImageList_EndDrag';
  7354. {$EXTERNALSYM ImageList_DragEnter}
  7355. function ImageList_DragEnter; external cctrl name 'ImageList_DragEnter';
  7356. {$EXTERNALSYM ImageList_DragLeave}
  7357. function ImageList_DragLeave; external cctrl name 'ImageList_DragLeave';
  7358. {$EXTERNALSYM ImageList_DragMove}
  7359. function ImageList_DragMove; external cctrl name 'ImageList_DragMove';
  7360. {$EXTERNALSYM ImageList_SetDragCursorImage}
  7361. function ImageList_SetDragCursorImage; external cctrl name 'ImageList_SetDragCursorImage';
  7362. {$EXTERNALSYM ImageList_DragShowNolock}
  7363. function ImageList_DragShowNolock; external cctrl name 'ImageList_DragShowNolock';
  7364. {$EXTERNALSYM ImageList_GetDragImage}
  7365. function ImageList_GetDragImage; external cctrl name 'ImageList_GetDragImage';
  7366.  
  7367. { macros }
  7368. {$EXTERNALSYM ImageList_RemoveAll}
  7369. procedure ImageList_RemoveAll(ImageList: HIMAGELIST);
  7370. begin
  7371.   ImageList_Remove(ImageList, -1);
  7372. end;
  7373.  
  7374. {$EXTERNALSYM ImageList_ExtractIcon}
  7375. function ImageList_ExtractIcon(Instance: THandle; ImageList: HIMAGELIST;
  7376.   Image: Integer): HIcon;
  7377. begin
  7378.   Result := ImageList_GetIcon(ImageList, Image, 0);
  7379. end;
  7380.  
  7381. {$EXTERNALSYM ImageList_LoadBitmap}
  7382. function ImageList_LoadBitmap(Instance: THandle; Bmp: PChar;
  7383.   CX, Grow: Integer; Mask: TColorRef): HIMAGELIST;
  7384. begin
  7385.   Result := ImageList_LoadImage(Instance, Bmp, CX, Grow, Mask,
  7386.     IMAGE_BITMAP, 0);
  7387. end;
  7388.  
  7389. function ImageList_Read; external cctrl name 'ImageList_Read';
  7390. function ImageList_Write; external cctrl name 'ImageList_Write';
  7391.  
  7392. {$EXTERNALSYM ImageList_GetIconSize}
  7393. function ImageList_GetIconSize; external cctrl name 'ImageList_GetIconSize';
  7394. {$EXTERNALSYM ImageList_SetIconSize}
  7395. function ImageList_SetIconSize; external cctrl name 'ImageList_SetIconSize';
  7396. {$EXTERNALSYM ImageList_GetImageInfo}
  7397. function ImageList_GetImageInfo; external cctrl name 'ImageList_GetImageInfo';
  7398. {$EXTERNALSYM ImageList_Merge}
  7399. function ImageList_Merge; external cctrl name 'ImageList_Merge';
  7400. {$EXTERNALSYM ImageList_Duplicate}
  7401. function ImageList_Duplicate(himl: HIMAGELIST): HIMAGELIST; stdcall; external cctrl name 'ImageList_Duplicate';
  7402.  
  7403. { Headers }
  7404.  
  7405. {$EXTERNALSYM Header_GetItemCount}
  7406. function Header_GetItemCount(Header: HWnd): Integer;
  7407. begin
  7408.   Result := SendMessage(Header, HDM_GETITEMCOUNT, 0, 0);
  7409. end;
  7410.  
  7411. {$EXTERNALSYM Header_InsertItem}
  7412. function Header_InsertItem(Header: HWnd; Index: Integer;
  7413.   const Item: THDItem): Integer;
  7414. begin
  7415.   Result := SendMessage(Header, HDM_INSERTITEM, Index, Longint(@Item));
  7416. end;
  7417.  
  7418. {$EXTERNALSYM Header_DeleteItem}
  7419. function Header_DeleteItem(Header: HWnd; Index: Integer): Bool;
  7420. begin
  7421.   Result := Bool( SendMessage(Header, HDM_DELETEITEM, Index, 0) );
  7422. end;
  7423.  
  7424. {$EXTERNALSYM Header_GetItem}
  7425. function Header_GetItem(Header: HWnd; Index: Integer; var Item: THDItem): Bool;
  7426. begin
  7427.   Result := Bool( SendMessage(Header, HDM_GETITEM, Index, Longint(@Item)) );
  7428. end;
  7429.  
  7430. {$EXTERNALSYM Header_SetItem}
  7431. function Header_SetItem(Header: HWnd; Index: Integer; const Item: THDItem): Bool;
  7432. begin
  7433.   Result := Bool( SendMessage(Header, HDM_SETITEM, Index, Longint(@Item)) );
  7434. end;
  7435.  
  7436. {$EXTERNALSYM Header_Layout}
  7437. function Header_Layout(Header: HWnd; Layout: PHDLayout): Bool;
  7438. begin
  7439.   Result := Bool( SendMessage(Header, HDM_LAYOUT, 0, Longint(Layout)) );
  7440. end;
  7441.  
  7442. {$EXTERNALSYM Header_GetItemRect}
  7443. function Header_GetItemRect(hwnd: HWND; iItem: Integer; lprc: PRect): Integer;
  7444. begin
  7445.   Result := SendMessage(hwnd, HDM_GETITEMRECT, iItem, LPARAM(lprc));
  7446. end;
  7447.  
  7448. {$EXTERNALSYM Header_SetImageList}
  7449. function Header_SetImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST;
  7450. begin
  7451.   Result := SendMessage(hwnd, HDM_SETIMAGELIST, 0, LPARAM(himl));
  7452. end;
  7453.  
  7454. {$EXTERNALSYM Header_GetImageList}
  7455. function Header_GetImageList(hwnd: HWND): HIMAGELIST;
  7456. begin
  7457.   Result := SendMessage(hwnd, HDM_GETIMAGELIST, 0, 0);
  7458. end;
  7459.  
  7460. {$EXTERNALSYM Header_OrderToIndex}
  7461. function Header_OrderToIndex(hwnd: HWND; i: Integer): Integer;
  7462. begin
  7463.   Result := SendMessage(hwnd, HDM_ORDERTOINDEX, i, 0);
  7464. end;
  7465.  
  7466. {$EXTERNALSYM Header_CreateDragImage}
  7467. function Header_CreateDragImage(hwnd: HWND; i: Integer): HIMAGELIST;
  7468. begin
  7469.   Result := SendMessage(hwnd, HDM_CREATEDRAGIMAGE, i, 0);
  7470. end;
  7471.  
  7472. {$EXTERNALSYM Header_GetOrderArray}
  7473. function Header_GetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  7474. begin
  7475.   Result := SendMessage(hwnd, HDM_GETORDERARRAY, iCount, LPARAM(lpi));
  7476. end;
  7477.  
  7478. {$EXTERNALSYM Header_SetOrderArray}
  7479. function Header_SetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  7480. begin
  7481.   Result := SendMessage(hwnd, HDM_SETORDERARRAY, iCount, LPARAM(lpi));
  7482. end;
  7483.  
  7484. {$EXTERNALSYM Header_SetHotDivider}
  7485. function Header_SetHotDivider(hwnd: HWND; fPos: BOOL; dw: DWORD): Integer;
  7486. begin
  7487.   Result := SendMessage(hwnd, HDM_SETHOTDIVIDER, Integer(fPos), dw);
  7488. end;
  7489.  
  7490. {$EXTERNALSYM Header_SetUnicodeFormat}
  7491. function Header_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  7492. begin
  7493.   Result := SendMessage(hwnd, HDM_SETUNICODEFORMAT, Integer(fUnicode), 0);
  7494. end;
  7495.  
  7496. {$EXTERNALSYM Header_GetUnicodeFormat}
  7497. function Header_GetUnicodeFormat(hwnd: HWND): Integer;
  7498. begin
  7499.   Result := SendMessage(hwnd, HDM_GETUNICODEFORMAT, 0, 0);
  7500. end;
  7501.  
  7502. { Toolbar }
  7503.  
  7504. {$EXTERNALSYM CreateToolBarEx}
  7505. function CreateToolBarEx; external cctrl name 'CreateToolbarEx';
  7506. {$EXTERNALSYM CreateMappedBitmap}
  7507. function CreateMappedBitmap; external cctrl name 'CreateMappedBitmap';
  7508.  
  7509. { Status bar }
  7510. {$EXTERNALSYM DrawStatusTextA}
  7511. procedure DrawStatusTextA; external cctrl name 'DrawStatusTextA';
  7512. {$EXTERNALSYM DrawStatusTextW}
  7513. procedure DrawStatusTextW; external cctrl name 'DrawStatusTextW';
  7514. {$EXTERNALSYM DrawStatusText}
  7515. procedure DrawStatusText; external cctrl name 'DrawStatusTextA';
  7516. {$EXTERNALSYM CreateStatusWindowA}
  7517. function CreateStatusWindowA; external cctrl name 'CreateStatusWindowA';
  7518. {$EXTERNALSYM CreateStatusWindowW}
  7519. function CreateStatusWindowW; external cctrl name 'CreateStatusWindowW';
  7520. {$EXTERNALSYM CreateStatusWindow}
  7521. function CreateStatusWindow; external cctrl name 'CreateStatusWindowA';
  7522.  
  7523. { Menu Help }
  7524. {$EXTERNALSYM MenuHelp}
  7525. procedure MenuHelp; external cctrl name 'MenuHelp';
  7526. {$EXTERNALSYM ShowHideMenuCtl}
  7527. function ShowHideMenuCtl; external cctrl name 'ShowHideMenuCtl';
  7528. {$EXTERNALSYM GetEffectiveClientRect}
  7529. procedure GetEffectiveClientRect; external cctrl name 'GetEffectiveClientRect';
  7530.  
  7531.  
  7532. { Drag List Box }
  7533. {$EXTERNALSYM MakeDragList}
  7534. procedure MakeDragList; external cctrl name 'MakeDragList';
  7535. {$EXTERNALSYM DrawInsert}
  7536. procedure DrawInsert; external cctrl name 'DrawInsert';
  7537. {$EXTERNALSYM LBItemFromPt}
  7538. function LBItemFromPt; external cctrl name 'LBItemFromPt';
  7539.  
  7540. { UpDown control }
  7541. {$EXTERNALSYM CreateUpDownControl}
  7542. function CreateUpDownControl; external cctrl name 'CreateUpDownControl';
  7543.  
  7544.  
  7545. { List View }
  7546. {$EXTERNALSYM ListView_GetUnicodeFormat}
  7547. function ListView_GetUnicodeFormat(hwnd: HWND): BOOL;
  7548. begin
  7549.   Result := BOOL(SendMessage(hwnd, LVM_GETUNICODEFORMAT, 0, 0));
  7550. end;
  7551.  
  7552. {$EXTERNALSYM ListView_SetUnicodeFormat}
  7553. function ListView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  7554. begin
  7555.   Result := SendMessage(hwnd, LVM_SETUNICODEFORMAT, Integer(fUnicode), 0);
  7556. end;
  7557.  
  7558. {$EXTERNALSYM ListView_GetBkColor}
  7559. function ListView_GetBkColor(hWnd: HWND): TColorRef;
  7560. begin
  7561.   Result := SendMessage(hWnd, LVM_GETBKCOLOR, 0, 0);
  7562. end;
  7563.  
  7564. {$EXTERNALSYM ListView_SetBkColor}
  7565. function ListView_SetBkColor(hWnd: HWND; clrBk: TColorRef): Bool;
  7566. begin
  7567.   Result := Bool( SendMessage(hWnd, LVM_SETBKCOLOR, 0, clrBk) );
  7568. end;
  7569.  
  7570. {$EXTERNALSYM ListView_GetImageList}
  7571. function ListView_GetImageList(hWnd: HWND; iImageList: Integer): HIMAGELIST;
  7572. begin
  7573.   Result := HIMAGELIST( SendMessage(hWnd, LVM_GETIMAGELIST, iImageList, 0) );
  7574. end;
  7575.  
  7576. {$EXTERNALSYM ListView_SetImageList}
  7577. function ListView_SetImageList(hWnd: HWND; himl: HIMAGELIST; iImageList: Integer): HIMAGELIST;
  7578. begin
  7579.   Result := HIMAGELIST( SendMessage(hWnd, LVM_SETIMAGELIST, iImageList, Longint(himl)) );
  7580. end;
  7581.  
  7582. {$EXTERNALSYM ListView_GetItemCount}
  7583. function ListView_GetItemCount(hWnd: HWND): Integer;
  7584. begin
  7585.   Result := SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
  7586. end;
  7587.  
  7588. {$EXTERNALSYM IndexToStateImageMask}
  7589. function IndexToStateImageMask(I: Longint): Longint;
  7590. begin
  7591.   Result := I shl 12;
  7592. end;
  7593.  
  7594. {$EXTERNALSYM ListView_GetItemA}
  7595. function ListView_GetItemA(hWnd: HWND; var pItem: TLVItemA): Bool;
  7596. begin
  7597.   Result := Bool( SendMessage(hWnd, LVM_GETITEM, 0, Longint(@pItem)) );
  7598. end;
  7599. {$EXTERNALSYM ListView_GetItemW}
  7600. function ListView_GetItemW(hWnd: HWND; var pItem: TLVItemW): Bool;
  7601. begin
  7602.   Result := Bool( SendMessage(hWnd, LVM_GETITEM, 0, Longint(@pItem)) );
  7603. end;
  7604. {$EXTERNALSYM ListView_GetItem}
  7605. function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;
  7606. begin
  7607.   Result := Bool( SendMessage(hWnd, LVM_GETITEM, 0, Longint(@pItem)) );
  7608. end;
  7609.  
  7610. {$EXTERNALSYM ListView_SetItemA}
  7611. function ListView_SetItemA(hWnd: HWND; const pItem: TLVItemA): Bool;
  7612. begin
  7613.   Result := Bool( SendMessage(hWnd, LVM_SETITEM, 0, Longint(@pItem)) );
  7614. end;
  7615. {$EXTERNALSYM ListView_SetItemW}
  7616. function ListView_SetItemW(hWnd: HWND; const pItem: TLVItemW): Bool;
  7617. begin
  7618.   Result := Bool( SendMessage(hWnd, LVM_SETITEM, 0, Longint(@pItem)) );
  7619. end;
  7620. {$EXTERNALSYM ListView_SetItem}
  7621. function ListView_SetItem(hWnd: HWND; const pItem: TLVItem): Bool;
  7622. begin
  7623.   Result := Bool( SendMessage(hWnd, LVM_SETITEM, 0, Longint(@pItem)) );
  7624. end;
  7625.  
  7626. {$EXTERNALSYM ListView_InsertItemA}
  7627. function ListView_InsertItemA(hWnd: HWND; const pItem: TLVItemA): Integer;
  7628. begin
  7629.   Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
  7630. end;
  7631. {$EXTERNALSYM ListView_InsertItemW}
  7632. function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer;
  7633. begin
  7634.   Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
  7635. end;
  7636. {$EXTERNALSYM ListView_InsertItem}
  7637. function ListView_InsertItem(hWnd: HWND; const pItem: TLVItem): Integer;
  7638. begin
  7639.   Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
  7640. end;
  7641.  
  7642. {$EXTERNALSYM ListView_DeleteItem}
  7643. function ListView_DeleteItem(hWnd: HWND; i: Integer): Bool;
  7644. begin
  7645.   Result := Bool( SendMessage(hWnd, LVM_DELETEITEM, i, 0) );
  7646. end;
  7647.  
  7648. {$EXTERNALSYM ListView_DeleteAllItems}
  7649. function ListView_DeleteAllItems(hWnd: HWND): Bool;
  7650. begin
  7651.   Result := Bool( SendMessage(hWnd, LVM_DELETEALLITEMS, 0, 0) );
  7652. end;
  7653.  
  7654. {$EXTERNALSYM ListView_GetCallbackMask}
  7655. function ListView_GetCallbackMask(hWnd: HWND): UINT;
  7656. begin
  7657.   Result := SendMessage(hWnd, LVM_GETCALLBACKMASK, 0, 0);
  7658. end;
  7659.  
  7660. {$EXTERNALSYM ListView_SetCallbackMask}
  7661. function ListView_SetCallbackMask(hWnd: HWND; mask: UINT): Bool;
  7662. begin
  7663.   Result := Bool( SendMessage(hWnd, LVM_SETCALLBACKMASK, mask, 0) );
  7664. end;
  7665.  
  7666. {$EXTERNALSYM ListView_GetNextItem}
  7667. function ListView_GetNextItem(hWnd: HWND; iStart: Integer; Flags: UINT): Integer;
  7668. begin
  7669.   Result := SendMessage(hWnd, LVM_GETNEXTITEM, iStart, MakeLong(Flags, 0));
  7670. end;
  7671.  
  7672. {$EXTERNALSYM ListView_FindItemA}
  7673. function ListView_FindItemA(hWnd: HWND; iStart: Integer;
  7674.   const plvfi: TLVFindInfoA): Integer;
  7675. begin
  7676.   Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
  7677. end;
  7678. {$EXTERNALSYM ListView_FindItemW}
  7679. function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  7680.   const plvfi: TLVFindInfoW): Integer;
  7681. begin
  7682.   Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
  7683. end;
  7684. {$EXTERNALSYM ListView_FindItem}
  7685. function ListView_FindItem(hWnd: HWND; iStart: Integer;
  7686.   const plvfi: TLVFindInfo): Integer;
  7687. begin
  7688.   Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
  7689. end;
  7690.  
  7691. {$EXTERNALSYM ListView_GetItemRect}
  7692. function ListView_GetItemRect(hWnd: HWND; i: Integer; var prc: TRect;
  7693.   Code: Integer): Bool;
  7694. begin
  7695.   if @prc <> nil then
  7696.   begin
  7697.     prc.left := Code;
  7698.     Result := Bool( SendMessage(hWnd, LVM_GETITEMRECT, i, Longint(@prc)) );
  7699.   end
  7700.   else
  7701.     Result := Bool( SendMessage(hWnd, LVM_GETITEMRECT, i, 0) );
  7702. end;
  7703.  
  7704. {$EXTERNALSYM ListView_SetItemPosition}
  7705. function ListView_SetItemPosition(hWnd: HWND; i, x, y: Integer): Bool;
  7706. begin
  7707.   Result := Bool( SendMessage(hWnd, LVM_SETITEMPOSITION, i, MakeLong(x, y)) );
  7708. end;
  7709.  
  7710. {$EXTERNALSYM ListView_GetItemPosition}
  7711. function ListView_GetItemPosition(hwndLV: HWND; i: Integer;
  7712.   var ppt: TPoint): Bool;
  7713. begin
  7714.   Result := Bool( SendMessage(hWndLV, LVM_GETITEMPOSITION, i, Longint(@ppt)) );
  7715. end;
  7716.  
  7717. {$EXTERNALSYM ListView_GetStringWidthA}
  7718. function ListView_GetStringWidthA(hwndLV: HWND; psz: PAnsiChar): Integer;
  7719. begin
  7720.   Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
  7721. end;
  7722. {$EXTERNALSYM ListView_GetStringWidthW}
  7723. function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer;
  7724. begin
  7725.   Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
  7726. end;
  7727. {$EXTERNALSYM ListView_GetStringWidth}
  7728. function ListView_GetStringWidth(hwndLV: HWND; psz: PChar): Integer;
  7729. begin
  7730.   Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
  7731. end;
  7732.  
  7733. {$EXTERNALSYM ListView_HitTest}
  7734. function ListView_HitTest(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer;
  7735. begin
  7736.   Result := SendMessage(hwndLV, LVM_HITTEST, 0, Longint(@pinfo));
  7737. end;
  7738.  
  7739. {$EXTERNALSYM ListView_EnsureVisible}
  7740. function ListView_EnsureVisible(hwndLV: HWND; i: Integer; fPartialOK: Bool): Bool;
  7741. begin
  7742.   Result := SendMessage(hwndLV, LVM_ENSUREVISIBLE, i,
  7743.     MakeLong(Integer(fPartialOK), 0)) <> 0;
  7744. end;
  7745.  
  7746. {$EXTERNALSYM ListView_Scroll}
  7747. function ListView_Scroll(hwndLV: HWnd; DX, DY: Integer): Bool;
  7748. begin
  7749.   Result := Bool( SendMessage(hwndLV, LVM_SCROLL, DX, DY) );
  7750. end;
  7751.  
  7752. {$EXTERNALSYM ListView_RedrawItems}
  7753. function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool;
  7754. begin
  7755.   Result := Bool( SendMessage(hwndLV, LVM_REDRAWITEMS, iFirst, iLast) );
  7756. end;
  7757.  
  7758. {$EXTERNALSYM ListView_Arrange}
  7759. function ListView_Arrange(hwndLV: HWND; Code: UINT): Bool;
  7760. begin
  7761.   Result := Bool( SendMessage(hwndLV, LVM_ARRANGE, Code, 0) );
  7762. end;
  7763.  
  7764. {$EXTERNALSYM ListView_EditLabelA}
  7765. function ListView_EditLabelA(hwndLV: HWND; i: Integer): HWND;
  7766. begin
  7767.   Result := HWND( SendMessage(hwndLV, LVM_EDITLABEL, i, 0) );
  7768. end;
  7769. {$EXTERNALSYM ListView_EditLabelW}
  7770. function ListView_EditLabelW(hwndLV: HWND; i: Integer): HWND;
  7771. begin
  7772.   Result := HWND( SendMessage(hwndLV, LVM_EDITLABEL, i, 0) );
  7773. end;
  7774. {$EXTERNALSYM ListView_EditLabel}
  7775. function ListView_EditLabel(hwndLV: HWND; i: Integer): HWND;
  7776. begin
  7777.   Result := HWND( SendMessage(hwndLV, LVM_EDITLABEL, i, 0) );
  7778. end;
  7779.  
  7780. {$EXTERNALSYM ListView_GetEditControl}
  7781. function ListView_GetEditControl(hwndLV: HWND): HWND;
  7782. begin
  7783.   Result := HWND( SendMessage(hwndLV, LVM_GETEDITCONTROL, 0, 0) );
  7784. end;
  7785.  
  7786. {$EXTERNALSYM ListView_GetColumnA}
  7787. function ListView_GetColumnA(hwnd: HWND; iCol: Integer; var pcol: TLVColumnA): Bool;
  7788. begin
  7789.   Result := Bool( SendMessage(hwnd, LVM_GETCOLUMN, iCol, Longint(@pcol)) );
  7790. end;
  7791. {$EXTERNALSYM ListView_GetColumnW}
  7792. function ListView_GetColumnW(hwnd: HWND; iCol: Integer; var pcol: TLVColumnW): Bool;
  7793. begin
  7794.   Result := Bool( SendMessage(hwnd, LVM_GETCOLUMN, iCol, Longint(@pcol)) );
  7795. end;
  7796. {$EXTERNALSYM ListView_GetColumn}
  7797. function ListView_GetColumn(hwnd: HWND; iCol: Integer; var pcol: TLVColumn): Bool;
  7798. begin
  7799.   Result := Bool( SendMessage(hwnd, LVM_GETCOLUMN, iCol, Longint(@pcol)) );
  7800. end;
  7801.  
  7802. {$EXTERNALSYM ListView_SetColumnA}
  7803. function ListView_SetColumnA(hwnd: HWND; iCol: Integer; const pcol: TLVColumnA): Bool;
  7804. begin
  7805.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMN, iCol, Longint(@pcol)) );
  7806. end;
  7807. {$EXTERNALSYM ListView_SetColumnW}
  7808. function ListView_SetColumnW(hwnd: HWND; iCol: Integer; const pcol: TLVColumnW): Bool;
  7809. begin
  7810.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMN, iCol, Longint(@pcol)) );
  7811. end;
  7812. {$EXTERNALSYM ListView_SetColumn}
  7813. function ListView_SetColumn(hwnd: HWND; iCol: Integer; const pcol: TLVColumn): Bool;
  7814. begin
  7815.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMN, iCol, Longint(@pcol)) );
  7816. end;
  7817.  
  7818. {$EXTERNALSYM ListView_InsertColumnA}
  7819. function ListView_InsertColumnA(hwnd: HWND; iCol: Integer; const pcol: TLVColumnA): Integer;
  7820. begin
  7821.   Result := SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, Longint(@pcol));
  7822. end;
  7823. {$EXTERNALSYM ListView_InsertColumnW}
  7824. function ListView_InsertColumnW(hwnd: HWND; iCol: Integer; const pcol: TLVColumnW): Integer;
  7825. begin
  7826.   Result := SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, Longint(@pcol));
  7827. end;
  7828. {$EXTERNALSYM ListView_InsertColumn}
  7829. function ListView_InsertColumn(hwnd: HWND; iCol: Integer; const pcol: TLVColumn): Integer;
  7830. begin
  7831.   Result := SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, Longint(@pcol));
  7832. end;
  7833.  
  7834. {$EXTERNALSYM ListView_DeleteColumn}
  7835. function ListView_DeleteColumn(hwnd: HWND; iCol: Integer): Bool;
  7836. begin
  7837.   Result := Bool( SendMessage(hWnd, LVM_DELETECOLUMN, iCol, 0) );
  7838. end;
  7839.  
  7840. {$EXTERNALSYM ListView_GetColumnWidth}
  7841. function ListView_GetColumnWidth(hwnd: HWND; iCol: Integer): Integer;
  7842. begin
  7843.   Result := Integer( SendMessage(hwnd, LVM_GETCOLUMNWIDTH, iCol, 0) );
  7844. end;
  7845.  
  7846. {$EXTERNALSYM ListView_SetColumnWidth}
  7847. function ListView_SetColumnWidth(hwnd: HWnd; iCol: Integer; cx: Integer): Bool;
  7848. begin
  7849.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMNWIDTH, iCol,
  7850.     MakeLong((cx), 0)) );
  7851. end;
  7852.  
  7853. {$EXTERNALSYM ListView_GetHeader}
  7854. function ListView_GetHeader(hwnd: HWND): HWND;
  7855. begin
  7856.   Result := SendMessage(hwnd, LVM_GETHEADER, 0, 0);
  7857. end;
  7858.  
  7859. {$EXTERNALSYM ListView_CreateDragImage}
  7860. function ListView_CreateDragImage(hwnd: HWND; i: Integer;
  7861.   const lpptUpLeft: TPoint): HIMAGELIST;
  7862. begin
  7863.   Result := HIMAGELIST( SendMessage(hwnd, LVM_CREATEDRAGIMAGE, i,
  7864.     Longint(@lpptUpLeft)));
  7865. end;
  7866.  
  7867. {$EXTERNALSYM ListView_GetViewRect}
  7868. function ListView_GetViewRect(hwnd: HWND; var prc: TRect): Bool;
  7869. begin
  7870.   Result := Bool( SendMessage(hwnd, LVM_GETVIEWRECT, 0, Longint(@prc)) );
  7871. end;
  7872.  
  7873. {$EXTERNALSYM ListView_GetTextColor}
  7874. function ListView_GetTextColor(hwnd: HWND): TColorRef;
  7875. begin
  7876.   Result := SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0);
  7877. end;
  7878.  
  7879. {$EXTERNALSYM ListView_SetTextColor}
  7880. function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool;
  7881. begin
  7882.   Result := Bool( SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, clrText) );
  7883. end;
  7884.  
  7885. {$EXTERNALSYM ListView_GetTextBkColor}
  7886. function ListView_GetTextBkColor(hwnd: HWND): TColorRef;
  7887. begin
  7888.   Result := SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0);
  7889. end;
  7890.  
  7891. {$EXTERNALSYM ListView_SetTextBkColor}
  7892. function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool;
  7893. begin
  7894.   Result := Bool( SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, clrTextBk) );
  7895. end;
  7896.  
  7897. {$EXTERNALSYM ListView_GetTopIndex}
  7898. function ListView_GetTopIndex(hwndLV: HWND): Integer;
  7899. begin
  7900.   Result := SendMessage(hwndLV, LVM_GETTOPINDEX, 0, 0);
  7901. end;
  7902.  
  7903. {$EXTERNALSYM ListView_GetCountPerPage}
  7904. function ListView_GetCountPerPage(hwndLV: HWND): Integer;
  7905. begin
  7906.   Result := SendMessage(hwndLV, LVM_GETCOUNTPERPAGE, 0, 0);
  7907. end;
  7908.  
  7909. {$EXTERNALSYM ListView_GetOrigin}
  7910. function ListView_GetOrigin(hwndLV: HWND; var ppt: TPoint): Bool;
  7911. begin
  7912.   Result := Bool( SendMessage(hwndLV, LVM_GETORIGIN, 0, Longint(@ppt)) );
  7913. end;
  7914.  
  7915. {$EXTERNALSYM ListView_Update}
  7916. function ListView_Update(hwndLV: HWND; i: Integer): Bool;
  7917. begin
  7918.   Result := SendMessage(hwndLV, LVM_UPDATE, i, 0) <> 0;
  7919. end;
  7920.  
  7921. {$EXTERNALSYM ListView_SetItemState}
  7922. function ListView_SetItemState(hwndLV: HWND; i: Integer; data, mask: UINT): Bool;
  7923. var
  7924.   Item: TLVItem;
  7925. begin
  7926.   Item.stateMask := mask;
  7927.   Item.state := data;
  7928.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMSTATE, i, Longint(@Item)) );
  7929. end;
  7930.  
  7931. {$EXTERNALSYM ListView_GetItemState}
  7932. function ListView_GetItemState(hwndLV: HWND; i, mask: Integer): Integer;
  7933. begin
  7934.   Result := SendMessage(hwndLV, LVM_GETITEMSTATE, i, mask);
  7935. end;
  7936.  
  7937. function ListView_GetCheckState(hwndLV: HWND; i: Integer): UINT;
  7938. begin
  7939.   Result := (SendMessage(hwndLV, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK) shr 12) - 1 ;
  7940. end;
  7941.  
  7942. procedure ListView_SetCheckState(hwndLV: HWND; i: Integer; Checked: Boolean);
  7943. var
  7944.   Item: TLVItem;
  7945. begin
  7946.   Item.statemask := LVIS_STATEIMAGEMASK;
  7947.   Item.State := ((Integer(Checked) and 1) + 1) shl 12;
  7948.   SendMessage(hwndLV, LVM_SETITEMSTATE, i, Integer(@Item));
  7949. end;
  7950.  
  7951. {$EXTERNALSYM ListView_GetItemTextA}
  7952. function ListView_GetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  7953.   pszText: PAnsiChar; cchTextMax: Integer): Integer;
  7954. var
  7955.   Item: TLVItemA;
  7956. begin
  7957.   Item.iSubItem := iSubItem;
  7958.   Item.cchTextMax := cchTextMax;
  7959.   Item.pszText := pszText;
  7960.   Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
  7961. end;
  7962. {$EXTERNALSYM ListView_GetItemTextW}
  7963. function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  7964.   pszText: PWideChar; cchTextMax: Integer): Integer;
  7965. var
  7966.   Item: TLVItemW;
  7967. begin
  7968.   Item.iSubItem := iSubItem;
  7969.   Item.cchTextMax := cchTextMax;
  7970.   Item.pszText := pszText;
  7971.   Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
  7972. end;
  7973. {$EXTERNALSYM ListView_GetItemText}
  7974. function ListView_GetItemText(hwndLV: HWND; i, iSubItem: Integer;
  7975.   pszText: PChar; cchTextMax: Integer): Integer;
  7976. var
  7977.   Item: TLVItem;
  7978. begin
  7979.   Item.iSubItem := iSubItem;
  7980.   Item.cchTextMax := cchTextMax;
  7981.   Item.pszText := pszText;
  7982.   Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
  7983. end;
  7984.  
  7985. {$EXTERNALSYM ListView_SetItemTextA}
  7986. function ListView_SetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  7987.   pszText: PAnsiChar): Bool;
  7988. var
  7989.   Item: TLVItemA;
  7990. begin
  7991.   Item.iSubItem := iSubItem;
  7992.   Item.pszText := pszText;
  7993.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
  7994. end;
  7995. {$EXTERNALSYM ListView_SetItemTextW}
  7996. function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  7997.   pszText: PWideChar): Bool;
  7998. var
  7999.   Item: TLVItemW;
  8000. begin
  8001.   Item.iSubItem := iSubItem;
  8002.   Item.pszText := pszText;
  8003.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
  8004. end;
  8005. {$EXTERNALSYM ListView_SetItemText}
  8006. function ListView_SetItemText(hwndLV: HWND; i, iSubItem: Integer;
  8007.   pszText: PChar): Bool;
  8008. var
  8009.   Item: TLVItem;
  8010. begin
  8011.   Item.iSubItem := iSubItem;
  8012.   Item.pszText := pszText;
  8013.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
  8014. end;
  8015.  
  8016. {$EXTERNALSYM ListView_SetItemCount}
  8017. procedure ListView_SetItemCount(hwndLV: HWND; cItems: Integer);
  8018. begin
  8019.   SendMessage(hwndLV, LVM_SETITEMCOUNT, cItems, 0);
  8020. end;
  8021.  
  8022. {$EXTERNALSYM ListView_SetItemCountEx}
  8023. procedure ListView_SetItemCountEx(hwndLV: HWND; cItems: Integer; dwFlags: DWORD);
  8024. begin
  8025.   SendMessage(hwndLV, LVM_SETITEMCOUNT, cItems, dwFlags);
  8026. end;
  8027.  
  8028. {$EXTERNALSYM ListView_SortItems}
  8029. function ListView_SortItems(hwndLV: HWND; pfnCompare: TLVCompare;
  8030.   lPrm: Longint): Bool;
  8031. begin
  8032.   Result := Bool( SendMessage(hwndLV, LVM_SORTITEMS, lPrm,
  8033.     Longint(@pfnCompare)) );
  8034. end;
  8035.  
  8036. {$EXTERNALSYM ListView_SetItemPosition32}
  8037. procedure ListView_SetItemPosition32(hwndLV: HWND; i, x, y: Integer);
  8038. var
  8039.   ptNewPos: TPoint;
  8040. begin
  8041.   ptNewPos.x := x;
  8042.   ptNewPos.y := y;
  8043.   SendMessage(hwndLV, LVM_SETITEMPOSITION32, i, Longint(@ptNewPos));
  8044. end;
  8045.  
  8046. {$EXTERNALSYM ListView_GetSelectedCount}
  8047. function ListView_GetSelectedCount(hwndLV: HWND): UINT;
  8048. begin
  8049.   Result := SendMessage(hwndLV, LVM_GETSELECTEDCOUNT, 0, 0);
  8050. end;
  8051.  
  8052. {$EXTERNALSYM ListView_GetItemSpacing}
  8053. function ListView_GetItemSpacing(hwndLV: HWND; fSmall: Integer): Longint;
  8054. begin
  8055.   Result := SendMessage(hwndLV, LVM_GETITEMSPACING, fSmall, 0);
  8056. end;
  8057.  
  8058. {$EXTERNALSYM ListView_GetISearchStringA}
  8059. function ListView_GetISearchStringA(hwndLV: HWND; lpsz: PAnsiChar): Bool;
  8060. begin
  8061.   Result := Bool( SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0,
  8062.     Longint(lpsz)) );
  8063. end;
  8064. {$EXTERNALSYM ListView_GetISearchStringW}
  8065. function ListView_GetISearchStringW(hwndLV: HWND; lpsz: PWideChar): Bool;
  8066. begin
  8067.   Result := Bool( SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0,
  8068.     Longint(lpsz)) );
  8069. end;
  8070. {$EXTERNALSYM ListView_GetISearchString}
  8071. function ListView_GetISearchString(hwndLV: HWND; lpsz: PChar): Bool;
  8072. begin
  8073.   Result := Bool( SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0,
  8074.     Longint(lpsz)) );
  8075. end;
  8076.  
  8077. function ListView_SetIconSpacing(hwndLV: HWND; cx, cy: Word): DWORD;
  8078. begin
  8079.   Result := SendMessage(hwndLV, LVM_SETICONSPACING, 0, MakeLong(cx, cy));
  8080. end;
  8081.  
  8082. function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL;
  8083. begin
  8084.   Result := BOOL(SendMessage(hwndLV, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw));
  8085. end;
  8086.  
  8087. function ListView_GetExtendedListViewStyle(hwndLV: HWND): DWORD;
  8088. begin
  8089.   Result := SendMessage(hwndLV, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
  8090. end;
  8091.  
  8092. function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer;
  8093.   code: DWORD; prc: PRect): BOOL;
  8094. begin
  8095.   if prc <> nil then
  8096.   begin
  8097.     prc^.Top := iSubItem;
  8098.     prc^.Left := code;
  8099.   end;
  8100.   Result := BOOL(SendMessage(hwndLV, LVM_GETSUBITEMRECT, iItem, Longint(prc)));
  8101. end;
  8102.  
  8103. function ListView_SubItemHitTest(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer;
  8104. begin
  8105.   Result := SendMessage(hwndLV, LVM_SUBITEMHITTEST, 0, Longint(plvhti));
  8106. end;
  8107.  
  8108. function ListView_SetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  8109.   pi: PInteger): BOOL;
  8110. begin
  8111.   Result := BOOL(SendMessage(hwndLV, LVM_SETCOLUMNORDERARRAY, iCount,
  8112.     Longint(pi)));
  8113. end;
  8114.  
  8115. function ListView_GetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  8116.   pi: PInteger): BOOL;
  8117. begin
  8118.   Result := BOOL(SendMessage(hwndLV, LVM_GETCOLUMNORDERARRAY, iCount,
  8119.     Longint(pi)));
  8120. end;
  8121.  
  8122. function ListView_SetHotItem(hwndLV: HWND; i: Integer): Integer;
  8123. begin
  8124.   Result := SendMessage(hwndLV, LVM_SETHOTITEM, i, 0);
  8125. end;
  8126.  
  8127. function ListView_GetHotItem(hwndLV: HWND): Integer;
  8128. begin
  8129.   Result := SendMessage(hwndLV, LVM_GETHOTITEM, 0, 0);
  8130. end;
  8131.  
  8132. function ListView_SetHotCursor(hwndLV: HWND; hcur: HCURSOR): HCURSOR;
  8133. begin
  8134.   Result := SendMessage(hwndLV, LVM_SETHOTCURSOR, 0, hcur);
  8135. end;
  8136.  
  8137. function ListView_GetHotCursor(hwndLV: HWND): HCURSOR;
  8138. begin
  8139.   Result := SendMessage(hwndLV, LVM_GETHOTCURSOR, 0, 0);
  8140. end;
  8141.  
  8142. function ListView_ApproximateViewRect(hwndLV: HWND; iWidth, iHeight: Word;
  8143.   iCount: Integer): DWORD;
  8144. begin
  8145.   Result := SendMessage(hwndLV, LVM_APPROXIMATEVIEWRECT, iCount,
  8146.     MakeLParam(iWidth, iHeight));
  8147. end;
  8148.  
  8149. function ListView_SetWorkAreas(hwndLV: HWND; prc: PRect): BOOL;
  8150. begin
  8151.   Result := BOOL(SendMessage(hwndLV, LVM_SETWORKAREA, 0, Longint(prc)));
  8152. end;
  8153.  
  8154. {$EXTERNALSYM ListView_GetSelectionMark}
  8155. function ListView_GetSelectionMark(hwnd: HWND): Integer;
  8156. begin
  8157.   Result := SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0);
  8158. end;
  8159.  
  8160. {$EXTERNALSYM ListView_SetSelectionMark}
  8161. function ListView_SetSelectionMark(hwnd: HWND; i: Integer): Integer;
  8162. begin
  8163.   Result := SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, i);
  8164. end;
  8165.  
  8166. {$EXTERNALSYM ListView_GetWorkAreas}
  8167. function ListView_GetWorkAreas(hwnd: HWND; nWorkAreas: Integer; prc: PRect): BOOL;
  8168. begin
  8169.   Result := BOOL(SendMessage(hwnd, LVM_GETWORKAREAS, nWorkAreas, Integer(prc)));
  8170. end;
  8171.  
  8172. {$EXTERNALSYM ListView_SetHoverTime}
  8173. function ListView_SetHoverTime(hwndLV: HWND; dwHoverTimeMs: DWORD): DWORD;
  8174. begin
  8175.   Result := SendMessage(hwndLV, LVM_SETHOVERTIME, 0, dwHoverTimeMs);
  8176. end;
  8177.  
  8178. {$EXTERNALSYM ListView_GetHoverTime}
  8179. function ListView_GetHoverTime(hwndLV: HWND): Integer;
  8180. begin
  8181.   Result := SendMessage(hwndLV, LVM_GETHOVERTIME, 0, 0);
  8182. end;
  8183.  
  8184. {$EXTERNALSYM ListView_GetNumberOfWorkAreas}
  8185. function ListView_GetNumberOfWorkAreas(hwnd: HWND; pnWorkAreas: PInteger): Integer;
  8186. begin
  8187.   Result := SendMessage(hwnd, LVM_GETNUMBEROFWORKAREAS, 0, Integer(pnWorkAreas));
  8188. end;
  8189.  
  8190. {$EXTERNALSYM ListView_SetToolTips}
  8191. function ListView_SetToolTips(hwndLV: HWND; hwndNewHwnd: HWND): HWND;
  8192. begin
  8193.   Result := HWND(SendMessage(hwndLV, LVM_SETTOOLTIPS, WPARAM(hwndNewHwnd), 0));
  8194. end;
  8195.  
  8196. {$EXTERNALSYM ListView_GetToolTips}
  8197. function ListView_GetToolTips(hwndLV: HWND): HWND;
  8198. begin
  8199.   Result := HWND(SendMessage(hwndLV, LVM_GETTOOLTIPS, 0, 0));
  8200. end;
  8201.  
  8202. {$EXTERNALSYM ListView_SetBkImage}
  8203. function ListView_SetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  8204. begin
  8205.   Result := BOOL(SendMessage(hwnd, LVM_SETBKIMAGE, 0, LPARAM(plvbki)));
  8206. end;
  8207. {$EXTERNALSYM ListView_GetBkImage}
  8208. function ListView_GetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  8209. begin
  8210.   Result := BOOL(SendMessage(hwnd, LVM_GETBKIMAGE, 0, LPARAM(plvbki)));
  8211. end;
  8212.  
  8213. { Tree View }
  8214.  
  8215. {$EXTERNALSYM TreeView_InsertItem}
  8216. function TreeView_InsertItem(hwnd: HWND; const lpis: TTVInsertStruct): HTreeItem;
  8217. begin
  8218.   Result := HTreeItem( SendMessage(hwnd, TVM_INSERTITEM, 0, Longint(@lpis)) );
  8219. end;
  8220.  
  8221. {$EXTERNALSYM TreeView_DeleteItem}
  8222. function TreeView_DeleteItem(hwnd: HWND; hitem: HTreeItem): Bool;
  8223. begin
  8224.   Result := Bool( SendMessage(hwnd, TVM_DELETEITEM, 0, Longint(hitem)) );
  8225. end;
  8226.  
  8227. {$EXTERNALSYM TreeView_DeleteAllItems}
  8228. function TreeView_DeleteAllItems(hwnd: HWND): Bool;
  8229. begin
  8230.   Result := Bool( SendMessage(hwnd, TVM_DELETEITEM, 0, Longint(TVI_ROOT)) );
  8231. end;
  8232.  
  8233. {$EXTERNALSYM TreeView_Expand}
  8234. function TreeView_Expand(hwnd: HWND; hitem: HTreeItem; code: Integer): Bool;
  8235. begin
  8236.   Result := Bool( SendMessage(hwnd, TVM_EXPAND, code, Longint(hitem)) );
  8237. end;
  8238.  
  8239. {$EXTERNALSYM TreeView_GetItemRect}
  8240. function TreeView_GetItemRect(hwnd: HWND; hitem: HTreeItem;
  8241.   var prc: TRect; code: Bool): Bool;
  8242. begin
  8243.   HTreeItem(Pointer(@prc)^) := hitem;
  8244.   Result := Bool( SendMessage(hwnd, TVM_GETITEMRECT, Integer(code), Longint(@prc)) );
  8245. end;
  8246.  
  8247. {$EXTERNALSYM TreeView_GetCount}
  8248. function TreeView_GetCount(hwnd: HWND): UINT;
  8249. begin
  8250.   Result := SendMessage(hwnd, TVM_GETCOUNT, 0, 0);
  8251. end;
  8252.  
  8253. {$EXTERNALSYM TreeView_GetIndent}
  8254. function TreeView_GetIndent(hwnd: HWND): UINT;
  8255. begin
  8256.   Result := SendMessage(hwnd, TVM_GETINDENT, 0, 0);
  8257. end;
  8258.  
  8259. {$EXTERNALSYM TreeView_SetIndent}
  8260. function TreeView_SetIndent(hwnd: HWND; indent: Integer): Bool;
  8261. begin
  8262.   Result := Bool( SendMessage(hwnd, TVM_SETINDENT, indent, 0) );
  8263. end;
  8264.  
  8265. {$EXTERNALSYM TreeView_GetImageList}
  8266. function TreeView_GetImageList(hwnd: HWND; iImage: Integer): HIMAGELIST;
  8267. begin
  8268.   Result := HIMAGELIST( SendMessage(hwnd, TVM_GETIMAGELIST, iImage, 0) );
  8269. end;
  8270.  
  8271. {$EXTERNALSYM TreeView_SetImageList}
  8272. function TreeView_SetImageList(hwnd: HWND; himl: HIMAGELIST;
  8273.   iImage: Integer): HIMAGELIST;
  8274. begin
  8275.   Result := HIMAGELIST( SendMessage(hwnd, TVM_SETIMAGELIST, iImage,
  8276.     Longint(himl)) );
  8277. end;
  8278.  
  8279. {$EXTERNALSYM TreeView_GetNextItem}
  8280. function TreeView_GetNextItem(hwnd: HWND; hitem: HTreeItem;
  8281.   code: Integer): HTreeItem;
  8282. begin
  8283.   Result := HTreeItem( SendMessage(hwnd, TVM_GETNEXTITEM, code,
  8284.     Longint(hitem)) );
  8285. end;
  8286.  
  8287. {$EXTERNALSYM TreeView_GetChild}
  8288. function TreeView_GetChild(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8289. begin
  8290.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD);
  8291. end;
  8292.  
  8293. {$EXTERNALSYM TreeView_GetNextSibling}
  8294. function TreeView_GetNextSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8295. begin
  8296.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT);
  8297. end;
  8298.  
  8299. {$EXTERNALSYM TreeView_GetPrevSibling}
  8300. function TreeView_GetPrevSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8301. begin
  8302.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS);
  8303. end;
  8304.  
  8305. {$EXTERNALSYM TreeView_GetParent}
  8306. function TreeView_GetParent(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8307. begin
  8308.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT);
  8309. end;
  8310.  
  8311. {$EXTERNALSYM TreeView_GetFirstVisible}
  8312. function TreeView_GetFirstVisible(hwnd: HWND): HTreeItem;
  8313. begin
  8314.   Result := TreeView_GetNextItem(hwnd, nil,  TVGN_FIRSTVISIBLE);
  8315. end;
  8316.  
  8317. {$EXTERNALSYM TreeView_GetNextVisible}
  8318. function TreeView_GetNextVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8319. begin
  8320.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE);
  8321. end;
  8322.  
  8323. {$EXTERNALSYM TreeView_GetPrevVisible}
  8324. function TreeView_GetPrevVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8325. begin
  8326.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE);
  8327. end;
  8328.  
  8329. {$EXTERNALSYM TreeView_GetSelection}
  8330. function TreeView_GetSelection(hwnd: HWND): HTreeItem;
  8331. begin
  8332.   Result := TreeView_GetNextItem(hwnd, nil, TVGN_CARET);
  8333. end;
  8334.  
  8335. function TreeView_GetDropHilite(hwnd: HWND): HTreeItem;
  8336. begin
  8337.   Result := TreeView_GetNextItem(hwnd, nil, TVGN_DROPHILITE);
  8338. end;
  8339.  
  8340. {$EXTERNALSYM TreeView_GetRoot}
  8341. function TreeView_GetRoot(hwnd: HWND): HTreeItem;
  8342. begin
  8343.   Result := TreeView_GetNextItem(hwnd, nil, TVGN_ROOT);
  8344. end;
  8345.  
  8346. {$EXTERNALSYM TreeView_GetLastVisible}
  8347. function TreeView_GetLastVisible(hwnd: HWND): HTreeItem;
  8348. begin
  8349.   Result := TreeView_GetNextItem(hwnd, nil,  TVGN_LASTVISIBLE);
  8350. end;
  8351.  
  8352. {$EXTERNALSYM TreeView_Select}
  8353. function TreeView_Select(hwnd: HWND; hitem: HTreeItem;
  8354.   code: Integer): HTreeItem;
  8355. begin
  8356.   Result := HTreeItem( SendMessage(hwnd, TVM_SELECTITEM, code,
  8357.     Longint(hitem)) );
  8358. end;
  8359.  
  8360. {$EXTERNALSYM TreeView_SelectItem}
  8361. function TreeView_SelectItem(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8362. begin
  8363.   Result := TreeView_Select(hwnd, hitem, TVGN_CARET);
  8364. end;
  8365.  
  8366. {$EXTERNALSYM TreeView_SelectDropTarget}
  8367. function TreeView_SelectDropTarget(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8368. begin
  8369.   Result := TreeView_Select(hwnd, hitem, TVGN_DROPHILITE);
  8370. end;
  8371.  
  8372. {$EXTERNALSYM TreeView_SelectSetFirstVisible}
  8373. function TreeView_SelectSetFirstVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8374. begin
  8375.   Result := TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE);
  8376. end;
  8377.  
  8378. {$EXTERNALSYM TreeView_GetItemA}
  8379. function TreeView_GetItemA(hwnd: HWND; var pitem: TTVItemA): Bool;
  8380. begin
  8381.   Result := Bool( SendMessage(hwnd, TVM_GETITEM, 0, Longint(@pitem)) );
  8382. end;
  8383. {$EXTERNALSYM TreeView_GetItemW}
  8384. function TreeView_GetItemW(hwnd: HWND; var pitem: TTVItemW): Bool;
  8385. begin
  8386.   Result := Bool( SendMessage(hwnd, TVM_GETITEM, 0, Longint(@pitem)) );
  8387. end;
  8388. {$EXTERNALSYM TreeView_GetItem}
  8389. function TreeView_GetItem(hwnd: HWND; var pitem: TTVItem): Bool;
  8390. begin
  8391.   Result := Bool( SendMessage(hwnd, TVM_GETITEM, 0, Longint(@pitem)) );
  8392. end;
  8393.  
  8394. {$EXTERNALSYM TreeView_SetItemA}
  8395. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemA): Bool;
  8396. begin
  8397.   Result := Bool( SendMessage(hwnd, TVM_SETITEM, 0, Longint(@pitem)) );
  8398. end;
  8399. {$EXTERNALSYM TreeView_SetItemW}
  8400. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemW): Bool;
  8401. begin
  8402.   Result := Bool( SendMessage(hwnd, TVM_SETITEM, 0, Longint(@pitem)) );
  8403. end;
  8404. {$EXTERNALSYM TreeView_SetItem}
  8405. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItem): Bool;
  8406. begin
  8407.   Result := Bool( SendMessage(hwnd, TVM_SETITEM, 0, Longint(@pitem)) );
  8408. end;
  8409.  
  8410. {$EXTERNALSYM TreeView_EditLabelA}
  8411. function TreeView_EditLabelA(hwnd: HWND; hitem: HTreeItem): HWND;
  8412. begin
  8413.   Result := Windows.HWND( SendMessage(hwnd, TVM_EDITLABEL, 0, Longint(hitem)) );
  8414. end;
  8415. {$EXTERNALSYM TreeView_EditLabelW}
  8416. function TreeView_EditLabelW(hwnd: HWND; hitem: HTreeItem): HWND;
  8417. begin
  8418.   Result := Windows.HWND( SendMessage(hwnd, TVM_EDITLABEL, 0, Longint(hitem)) );
  8419. end;
  8420. {$EXTERNALSYM TreeView_EditLabel}
  8421. function TreeView_EditLabel(hwnd: HWND; hitem: HTreeItem): HWND;
  8422. begin
  8423.   Result := Windows.HWND( SendMessage(hwnd, TVM_EDITLABEL, 0, Longint(hitem)) );
  8424. end;
  8425.  
  8426. {$EXTERNALSYM TreeView_GetEditControl}
  8427. function TreeView_GetEditControl(hwnd: HWND): HWND;
  8428. begin
  8429.   Result := Windows.HWND( SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0) );
  8430. end;
  8431.  
  8432. {$EXTERNALSYM TreeView_GetVisibleCount}
  8433. function TreeView_GetVisibleCount(hwnd: HWND): UINT;
  8434. begin
  8435.   Result := SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0);
  8436. end;
  8437.  
  8438. {$EXTERNALSYM TreeView_HitTest}
  8439. function TreeView_HitTest(hwnd: HWND; var lpht: TTVHitTestInfo): HTreeItem;
  8440. begin
  8441.   Result := HTreeItem( SendMessage(hwnd, TVM_HITTEST, 0, Longint(@lpht)) );
  8442. end;
  8443.  
  8444. {$EXTERNALSYM TreeView_CreateDragImage}
  8445. function TreeView_CreateDragImage(hwnd: HWND; hitem: HTreeItem): HIMAGELIST;
  8446. begin
  8447.   Result := HIMAGELIST( SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0,
  8448.     Longint(hitem)) );
  8449. end;
  8450.  
  8451. {$EXTERNALSYM TreeView_SortChildren}
  8452. function TreeView_SortChildren(hwnd: HWND; hitem: HTreeItem;
  8453.   recurse: Integer): Bool;
  8454. begin
  8455.   Result := Bool( SendMessage(hwnd, TVM_SORTCHILDREN, recurse,
  8456.     Longint(hitem)) );
  8457. end;
  8458.  
  8459. {$EXTERNALSYM TreeView_EnsureVisible}
  8460. function TreeView_EnsureVisible(hwnd: HWND; hitem: HTreeItem): Bool;
  8461. begin
  8462.   Result := Bool( SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, Longint(hitem)) );
  8463. end;
  8464.  
  8465. {$EXTERNALSYM TreeView_SortChildrenCB}
  8466. function TreeView_SortChildrenCB(hwnd: HWND; const psort: TTVSortCB;
  8467.   recurse: Integer): Bool;
  8468. begin
  8469.   Result := Bool( SendMessage(hwnd, TVM_SORTCHILDRENCB, recurse,
  8470.     Longint(@psort)) );
  8471. end;
  8472.  
  8473. {$EXTERNALSYM TreeView_EndEditLabelNow}
  8474. function TreeView_EndEditLabelNow(hwnd: HWND; fCancel: Bool): Bool;
  8475. begin
  8476.   Result := Bool( SendMessage(hwnd, TVM_ENDEDITLABELNOW, Integer(fCancel),
  8477.     0) );
  8478. end;
  8479.  
  8480. {$EXTERNALSYM TreeView_GetISearchStringA}
  8481. function TreeView_GetISearchStringA(hwndTV: HWND; lpsz: PAnsiChar): Bool;
  8482. begin
  8483.   Result := Bool( SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0,
  8484.     Longint(lpsz)) );
  8485. end;
  8486. {$EXTERNALSYM TreeView_GetISearchStringW}
  8487. function TreeView_GetISearchStringW(hwndTV: HWND; lpsz: PWideChar): Bool;
  8488. begin
  8489.   Result := Bool( SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0,
  8490.     Longint(lpsz)) );
  8491. end;
  8492. {$EXTERNALSYM TreeView_GetISearchString}
  8493. function TreeView_GetISearchString(hwndTV: HWND; lpsz: PChar): Bool;
  8494. begin
  8495.   Result := Bool( SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0,
  8496.     Longint(lpsz)) );
  8497. end;
  8498.  
  8499. {$EXTERNALSYM TreeView_SetToolTips}
  8500. function TreeView_SetToolTips(wnd: HWND; hwndTT: HWND): HWND;
  8501. begin
  8502.   Result := HWND(SendMessage(wnd, TVM_SETTOOLTIPS, WPARAM(hwndTT), 0));
  8503. end;
  8504.  
  8505. {$EXTERNALSYM TreeView_GetToolTips}
  8506. function TreeView_GetToolTips(wnd: HWND): HWND;
  8507. begin
  8508.   Result := HWND(SendMessage(wnd, TVM_GETTOOLTIPS, 0, 0));
  8509. end;
  8510.  
  8511. {$EXTERNALSYM TreeView_SetInsertMark}
  8512. function TreeView_SetInsertMark(hwnd: HWND; hItem: Integer; fAfter: BOOL): BOOL;
  8513. begin
  8514.   Result := BOOL(SendMessage(hwnd, TVM_SETINSERTMARK, WPARAM(fAfter), LPARAM(hItem)));
  8515. end;
  8516.  
  8517. {$EXTERNALSYM TreeView_SetUnicodeFormat}
  8518. function TreeView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  8519. begin
  8520.   Result := BOOL(SendMessage(hwnd, TVM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  8521. end;
  8522.  
  8523. {$EXTERNALSYM TreeView_GetUnicodeFormat}
  8524. function TreeView_GetUnicodeFormat(hwnd: HWND): BOOL;
  8525. begin
  8526.   Result := BOOL(SendMessage(hwnd, TVM_GETUNICODEFORMAT, 0, 0));
  8527. end;
  8528.  
  8529. {$EXTERNALSYM TreeView_SetItemHeight}
  8530. function TreeView_SetItemHeight(hwnd: HWND; iHeight: Integer): Integer;
  8531. begin
  8532.   Result := SendMessage(hwnd, TVM_SETITEMHEIGHT, iHeight, 0);
  8533. end;
  8534.  
  8535. {$EXTERNALSYM TreeView_GetItemHeight}
  8536. function TreeView_GetItemHeight(hwnd: HWND): Integer;
  8537. begin
  8538.   Result := SendMessage(hwnd, TVM_GETITEMHEIGHT, 0, 0);
  8539. end;
  8540.  
  8541. {$EXTERNALSYM TreeView_SetBkColor}
  8542. function TreeView_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8543. begin
  8544.   Result := COLORREF(SendMessage(hwnd, TVM_SETBKCOLOR, 0, LPARAM(clr)));
  8545. end;
  8546.  
  8547. {$EXTERNALSYM TreeView_SetTextColor}
  8548. function TreeView_SetTextColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8549. begin
  8550.   Result := COLORREF(SendMessage(hwnd, TVM_SETTEXTCOLOR, 0, LPARAM(clr)));
  8551. end;
  8552.  
  8553. {$EXTERNALSYM TreeView_GetBkColor}
  8554. function TreeView_GetBkColor(hwnd: HWND): COLORREF;
  8555. begin
  8556.   Result := COLORREF(SendMessage(hwnd, TVM_GETBKCOLOR, 0, 0));
  8557. end;
  8558.  
  8559. {$EXTERNALSYM TreeView_GetTextColor}
  8560. function TreeView_GetTextColor(hwnd: HWND): COLORREF;
  8561. begin
  8562.   Result := COLORREF(SendMessage(hwnd, TVM_GETTEXTCOLOR, 0, 0));
  8563. end;
  8564.  
  8565. {$EXTERNALSYM TreeView_SetScrollTime}
  8566. function TreeView_SetScrollTime(hwnd: HWND; uTime: UINT): UINT;
  8567. begin
  8568.   Result := SendMessage(hwnd, TVM_SETSCROLLTIME, uTime, 0);
  8569. end;
  8570.  
  8571. {$EXTERNALSYM TreeView_GetScrollTime}
  8572. function TreeView_GetScrollTime(hwnd: HWND): UINT;
  8573. begin
  8574.   Result := SendMessage(hwnd, TVM_GETSCROLLTIME, 0, 0);
  8575. end;
  8576.  
  8577. {$EXTERNALSYM TreeView_SetInsertMarkColor}
  8578. function TreeView_SetInsertMarkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8579. begin
  8580.   Result := COLORREF(SendMessage(hwnd, TVM_SETINSERTMARKCOLOR, 0, LPARAM(clr)));
  8581. end;
  8582.  
  8583. {$EXTERNALSYM TreeView_GetInsertMarkColor}
  8584. function TreeView_GetInsertMarkColor(hwnd: HWND): COLORREF;
  8585. begin
  8586.   Result := COLORREF(SendMessage(hwnd, TVM_GETINSERTMARKCOLOR, 0, 0));
  8587. end;
  8588.  
  8589. { Tab control }
  8590.  
  8591. {$EXTERNALSYM TabCtrl_HitTest}
  8592. function TabCtrl_HitTest(hwndTC: HWND; pinfo: PTCHitTestInfo): Integer;
  8593. begin
  8594.   Result := SendMessage(hwndTC, TCM_HITTEST, 0, LPARAM(pinfo));
  8595. end;
  8596.  
  8597. {$EXTERNALSYM TabCtrl_SetItemExtra}
  8598. function TabCtrl_SetItemExtra(hwndTC: HWND; cb: Integer): BOOL;
  8599. begin
  8600.   Result := BOOL(SendMessage(hwndTC, TCM_SETITEMEXTRA, cb, 0));
  8601. end;
  8602.  
  8603. {$EXTERNALSYM TabCtrl_AdjustRect}
  8604. function TabCtrl_AdjustRect(hwnd: HWND; bLarger: BOOL; prc: PRect): Integer;
  8605. begin
  8606.   Result := SendMessage(hwnd, TCM_ADJUSTRECT, WPARAM(bLarger), LPARAM(prc));
  8607. end;
  8608.  
  8609. {$EXTERNALSYM TabCtrl_SetItemSize}
  8610. function TabCtrl_SetItemSize(hwnd: HWND; x, y: Integer): DWORD;
  8611. begin
  8612.   Result := SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y));
  8613. end;
  8614.  
  8615. {$EXTERNALSYM TabCtrl_RemoveImage}
  8616. procedure TabCtrl_RemoveImage(hwnd: HWND; i: Integer);
  8617. begin
  8618.   SendMessage(hwnd, TCM_REMOVEIMAGE, i, 0);
  8619. end;
  8620.  
  8621. {$EXTERNALSYM TabCtrl_SetPadding}
  8622. procedure TabCtrl_SetPadding(hwnd: HWND; cx, cy: Integer);
  8623. begin
  8624.   SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx, cy));
  8625. end;
  8626.  
  8627. {$EXTERNALSYM TabCtrl_GetRowCount}
  8628. function TabCtrl_GetRowCount(hwnd: HWND): Integer;
  8629. begin
  8630.   Result := SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0);
  8631. end;
  8632.  
  8633. {$EXTERNALSYM TabCtrl_GetToolTips}
  8634. function TabCtrl_GetToolTips(wnd: HWND): HWND;
  8635. begin
  8636.   Result := HWND(SendMessage(wnd, TCM_GETTOOLTIPS, 0, 0));
  8637. end;
  8638.  
  8639. {$EXTERNALSYM TabCtrl_SetToolTips}
  8640. procedure TabCtrl_SetToolTips(hwnd: HWND; hwndTT: HWND);
  8641. begin
  8642.   SendMessage(hwnd, TCM_SETTOOLTIPS, WPARAM(hwndTT), 0);
  8643. end;
  8644.  
  8645. {$EXTERNALSYM TabCtrl_GetCurFocus}
  8646. function TabCtrl_GetCurFocus(hwnd: HWND): Integer;
  8647. begin
  8648.   Result := SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0);
  8649. end;
  8650.  
  8651. {$EXTERNALSYM TabCtrl_SetCurFocus}
  8652. procedure TabCtrl_SetCurFocus(hwnd: HWND; i: Integer);
  8653. begin
  8654.   SendMessage(hwnd,TCM_SETCURFOCUS, i, 0);
  8655. end;
  8656.  
  8657. {$EXTERNALSYM TabCtrl_SetMinTabWidth}
  8658. function TabCtrl_SetMinTabWidth(hwnd: HWND; x: Integer): Integer;
  8659. begin
  8660.   Result := SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x);
  8661. end;
  8662.  
  8663. {$EXTERNALSYM TabCtrl_DeselectAll}
  8664. procedure TabCtrl_DeselectAll(hwnd: HWND; fExcludeFocus: BOOL);
  8665. begin
  8666.   SendMessage(hwnd, TCM_DESELECTALL, WPARAM(fExcludeFocus), 0)
  8667. end;
  8668.  
  8669. {$EXTERNALSYM TabCtrl_HighlightItem}
  8670. function TabCtrl_HighlightItem(hwnd: HWND; i: Integer; fHighlight: WordBool): BOOL;
  8671. begin
  8672.   Result :=  BOOL(SendMessage(hwnd, TCM_HIGHLIGHTITEM, i, MAKELONG(Word(fHighlight), 0)));
  8673. end;
  8674.  
  8675. {$EXTERNALSYM TabCtrl_SetExtendedStyle}
  8676. function TabCtrl_SetExtendedStyle(hwnd: HWND; dw: DWORD): DWORD;
  8677. begin
  8678.   Result := SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw);
  8679. end;
  8680.  
  8681. {$EXTERNALSYM TabCtrl_GetExtendedStyle}
  8682. function TabCtrl_GetExtendedStyle(hwnd: HWND): DWORD;
  8683. begin
  8684.   Result := SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0);
  8685. end;
  8686.  
  8687. {$EXTERNALSYM TabCtrl_SetUnicodeFormat}
  8688. function TabCtrl_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  8689. begin
  8690.   Result := BOOL(SendMessage(hwnd, TCM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  8691. end;
  8692.  
  8693. {$EXTERNALSYM TabCtrl_GetUnicodeFormat}
  8694. function TabCtrl_GetUnicodeFormat(hwnd: HWND): BOOL;
  8695. begin
  8696.   Result := BOOL(SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0));
  8697. end;
  8698.  
  8699. { Animate control }
  8700.  
  8701. {$EXTERNALSYM Animate_Create}
  8702. function Animate_Create(hwndP: HWND; id: HMENU; dwStyle: DWORD; hInstance: HINST): HWND;
  8703. begin
  8704.   Result := CreateWindow(ANIMATE_CLASS, nil, dwStyle, 0, 0, 0, 0, hwndP, id,
  8705.     hInstance, nil);
  8706. end;
  8707.  
  8708. {$EXTERNALSYM Animate_Open}
  8709. function Animate_Open(hwnd: HWND; szName: PChar): BOOL;
  8710. begin
  8711.   Result := BOOL(SendMessage(hwnd, ACM_OPEN, 0, LPARAM(szName)));
  8712. end;
  8713.  
  8714. {$EXTERNALSYM Animate_OpenEx}
  8715. function Animate_OpenEx(hwnd: HWND; hInst: HINST; szName: PChar): BOOL;
  8716. begin
  8717.   Result := BOOL(SendMessage(hwnd, ACM_OPEN, WPARAM(hInst), LPARAM(szName)));
  8718. end;
  8719.  
  8720. {$EXTERNALSYM Animate_Play}
  8721. function Animate_Play(hwnd: HWND; from, _to: Word; rep: UINT): BOOL;
  8722. begin
  8723.   Result := BOOL(SendMessage(hwnd, ACM_PLAY, rep, MAKELONG(from, _to)));
  8724. end;
  8725.  
  8726. {$EXTERNALSYM Animate_Stop}
  8727. function Animate_Stop(hwnd: HWND): BOOL;
  8728. begin
  8729.   Result := BOOL(SendMessage(hwnd, ACM_STOP, 0, 0));
  8730. end;
  8731.  
  8732. {$EXTERNALSYM Animate_Close}
  8733. function Animate_Close(hwnd: HWND): BOOL;
  8734. begin
  8735.   Result := Animate_Open(hwnd, nil);
  8736. end;
  8737.  
  8738. {$EXTERNALSYM Animate_Seek}
  8739. function Animate_Seek(hwnd: HWND; frame: Word): BOOL;
  8740. begin
  8741.   Result := Animate_Play(hwnd, frame, frame, 1);
  8742. end;
  8743.  
  8744. { MonthCal control }
  8745.  
  8746. {$EXTERNALSYM MonthCal_GetCurSel}
  8747. function MonthCal_GetCurSel(hmc: HWND; var pst: TSystemTime): BOOL;
  8748. begin
  8749.   Result := BOOL(SendMessage(hmc, MCM_GETCURSEL, 0, Longint(@pst)));
  8750. end;
  8751.  
  8752. {$EXTERNALSYM MonthCal_SetCurSel}
  8753. function MonthCal_SetCurSel(hmc: HWND; const pst: TSystemTime): BOOL;
  8754. begin
  8755.   Result := BOOL(SendMessage(hmc, MCM_SETCURSEL, 0, Longint(@pst)));
  8756. end;
  8757.  
  8758. {$EXTERNALSYM MonthCal_GetMaxSelCount}
  8759. function MonthCal_GetMaxSelCount(hmc: HWND): DWORD;
  8760. begin
  8761.   Result := SendMessage(hmc, MCM_GETMAXSELCOUNT, 0, 0);
  8762. end;
  8763.  
  8764. {$EXTERNALSYM MonthCal_SetMaxSelCount}
  8765. function MonthCal_SetMaxSelCount(hmc: HWND; n: UINT): BOOL;
  8766. begin
  8767.   Result := BOOL(SendMessage(hmc, MCM_SETMAXSELCOUNT, n, 0));
  8768. end;
  8769.  
  8770. {$EXTERNALSYM MonthCal_GetSelRange}
  8771. function MonthCal_GetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  8772. begin
  8773.   Result := BOOL(SendMessage(hmc, MCM_GETSELRANGE, 0, Longint(rgst)));
  8774. end;
  8775.  
  8776. {$EXTERNALSYM MonthCal_SetSelRange}
  8777. function MonthCal_SetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  8778. begin
  8779.   Result := BOOL(SendMessage(hmc, MCM_SETSELRANGE, 0, Longint(rgst)));
  8780. end;
  8781.  
  8782. {$EXTERNALSYM MonthCal_GetMonthRange}
  8783. function MonthCal_GetMonthRange(hmc: HWND; gmr: DWORD; rgst: PSystemTime): DWORD;
  8784. begin
  8785.   Result := SendMessage(hmc, MCM_GETMONTHRANGE, gmr, Longint(rgst));
  8786. end;
  8787.  
  8788. {$EXTERNALSYM MonthCal_SetDayState}
  8789. function MonthCal_SetDayState(hmc: HWND; cbds: Integer; const rgds: TNMDayState): BOOL;
  8790. begin
  8791.   Result := BOOL(SendMessage(hmc, MCM_SETDAYSTATE, cbds, Longint(@rgds)));
  8792. end;
  8793.  
  8794. {$EXTERNALSYM MonthCal_GetMinReqRect}
  8795. function MonthCal_GetMinReqRect(hmc: HWND; var prc: TRect): BOOL;
  8796. begin
  8797.   Result := BOOL(SendMessage(hmc, MCM_GETMINREQRECT, 0, Longint(@prc)));
  8798. end;
  8799.  
  8800. {$EXTERNALSYM MonthCal_SetToday}
  8801. function MonthCal_SetToday(hmc: HWND; const pst: TSystemTime): BOOL;
  8802. begin
  8803.   Result := BOOL(SendMessage(hmc, MCM_SETTODAY, 0, Longint(@pst)));
  8804. end;
  8805.  
  8806. {$EXTERNALSYM MonthCal_GetToday}
  8807. function MonthCal_GetToday(hmc: HWND; var pst: TSystemTime): BOOL;
  8808. begin
  8809.   Result := BOOL(SendMessage(hmc, MCM_GETTODAY, 0, Longint(@pst)));
  8810. end;
  8811.  
  8812. {$EXTERNALSYM MonthCal_HitTest}
  8813. function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD;
  8814. begin
  8815.   Result := SendMessage(hmc, MCM_HITTEST, 0, Longint(@info));
  8816. end;
  8817.  
  8818. {$EXTERNALSYM MonthCal_SetColor}
  8819. function MonthCal_SetColor(hmc: HWND; iColor: Integer; clr: TColorRef): BOOL;
  8820. begin
  8821.   Result := BOOL(SendMessage(hmc, MCM_SETCOLOR, iColor, clr));
  8822. end;
  8823.  
  8824. {$EXTERNALSYM MonthCal_GetColor}
  8825. function MonthCal_GetColor(hmc: HWND; iColor: Integer): TColorRef;
  8826. begin
  8827.   Result := TColorRef(SendMessage(hmc, MCM_SETCOLOR, iColor, 0));
  8828. end;
  8829.  
  8830. {$EXTERNALSYM MonthCal_SetFirstDayOfWeek}
  8831. function MonthCal_SetFirstDayOfWeek(hmc: HWND; iDay: Integer): BOOL;
  8832. begin
  8833.   Result := BOOL(SendMessage(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay));
  8834. end;
  8835.  
  8836. {$EXTERNALSYM MonthCal_GetFirstDayOfWeek}
  8837. function MonthCal_GetFirstDayOfWeek(hmc: HWND): Integer;
  8838. begin
  8839.   Result := SendMessage(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0);
  8840. end;
  8841.  
  8842. {$EXTERNALSYM MonthCal_GetRange}
  8843. function MonthCal_GetRange(hmc: HWND; rgst: PSystemTime): DWORD;
  8844. begin
  8845.   Result := SendMessage(hmc, MCM_GETRANGE, 0, Longint(rgst));
  8846. end;
  8847.  
  8848. {$EXTERNALSYM Monthcal_SetRange}
  8849. function Monthcal_SetRange(hmc: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  8850. begin
  8851.   Result := BOOL(SendMessage(hmc, MCM_SETRANGE, gdtr, Longint(rgst)));
  8852. end;
  8853.  
  8854. {$EXTERNALSYM MonthCal_GetMonthDelta}
  8855. function MonthCal_GetMonthDelta(hmc: HWND): Integer;
  8856. begin
  8857.   Result := SendMessage(hmc, MCM_GETMONTHDELTA, 0, 0);
  8858. end;
  8859.  
  8860. {$EXTERNALSYM MonthCal_SetMonthDelta}
  8861. function MonthCal_SetMonthDelta(hmc: HWND; n: Integer): Integer;
  8862. begin
  8863.   Result := SendMessage(hmc, MCM_SETMONTHDELTA, n, 0);
  8864. end;
  8865.  
  8866. {$EXTERNALSYM MonthCal_GetMaxTodayWidth}
  8867. function MonthCal_GetMaxTodayWidth(hmc: HWND): DWORD;
  8868. begin
  8869.   Result := SendMessage(hmc, MCM_GETMAXTODAYWIDTH, 0, 0);
  8870. end;
  8871.  
  8872. {$EXTERNALSYM MonthCal_SetUnicodeFormat}
  8873. function MonthCal_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  8874. begin
  8875.   Result := BOOL(SendMessage(hwnd, MCM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  8876. end;
  8877.  
  8878. {$EXTERNALSYM MonthCal_GetUnicodeFormat}
  8879. function MonthCal_GetUnicodeFormat(hwnd: HWND): BOOL;
  8880. begin
  8881.   Result := BOOL(SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0));
  8882. end;
  8883.  
  8884. { Date/Time Picker }
  8885.  
  8886. {$EXTERNALSYM DateTime_GetSystemTime}
  8887. function DateTime_GetSystemTime(hdp: HWND; var pst: TSystemTime): DWORD;
  8888. begin
  8889.   Result := SendMessage(hdp, DTM_GETSYSTEMTIME, 0, Longint(@pst));
  8890. end;
  8891.  
  8892. {$EXTERNALSYM DateTime_SetSystemTime}
  8893. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;
  8894. begin
  8895.   Result := BOOL(SendMessage(hdp, DTM_SETSYSTEMTIME, gd, Longint(@pst)));
  8896. end;
  8897.  
  8898. {$EXTERNALSYM DateTime_GetRange}
  8899. function DateTime_GetRange(hdp: HWND; rgst: PSystemTime): DWORD;
  8900. begin
  8901.   Result := SendMessage(hdp, DTM_GETRANGE, 0, Longint(rgst));
  8902. end;
  8903.  
  8904. {$EXTERNALSYM DateTime_SetRange}
  8905. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  8906. begin
  8907.   Result := BOOL(SendMessage(hdp, DTM_SETRANGE, gdtr, Longint(rgst)));
  8908. end;
  8909.  
  8910. {$EXTERNALSYM DateTime_SetFormatA}
  8911. function DateTime_SetFormatA(hdp: HWND; sz: PAnsiChar): BOOL;
  8912. begin
  8913.   Result := BOOL(SendMessage(hdp, DTM_SETFORMATA, 0, Longint(sz)));
  8914. end;
  8915. {$EXTERNALSYM DateTime_SetFormatW}
  8916. function DateTime_SetFormatW(hdp: HWND; sz: PWideChar): BOOL;
  8917. begin
  8918.   Result := BOOL(SendMessage(hdp, DTM_SETFORMATW, 0, Longint(sz)));
  8919. end;
  8920. {$EXTERNALSYM DateTime_SetFormat}
  8921. function DateTime_SetFormat(hdp: HWND; sz: PChar): BOOL;
  8922. begin
  8923.   Result := BOOL(SendMessage(hdp, DTM_SETFORMAT, 0, Longint(sz)));
  8924. end;
  8925.  
  8926. {$EXTERNALSYM DateTime_SetMonthCalColor}
  8927. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): DWORD;
  8928. begin
  8929.   Result := SendMessage(hdp, DTM_SETMCCOLOR, iColor, clr);
  8930. end;
  8931.  
  8932. {$EXTERNALSYM DateTime_GetMonthCalColor}
  8933. function DateTime_GetMonthCalColor(hdp: HWND; iColor: DWORD): TColorRef;
  8934. begin
  8935.   Result := SendMessage(hdp, DTM_GETMCCOLOR, iColor, 0);
  8936. end;
  8937.  
  8938. {$EXTERNALSYM DateTime_GetMonthCal}
  8939. function DateTime_GetMonthCal(hdp: HWND): HWND;
  8940. begin
  8941.   Result := SendMessage(hdp, DTM_GETMONTHCAL, 0, 0);
  8942. end;
  8943.  
  8944. {$EXTERNALSYM DateTime_SetMonthCalFont}
  8945. procedure DateTime_SetMonthCalFont(hdp: HWND; hfont: HFONT; fRedraw: BOOL);
  8946. begin
  8947.   SendMessage(hdp, DTM_SETMCFONT, WPARAM(hfont), LPARAM(fRedraw));
  8948. end;
  8949.  
  8950. {$EXTERNALSYM DateTime_GetMonthCalFont}
  8951. function DateTime_GetMonthCalFont(hdp: HWND): HFONT;
  8952. begin
  8953.   Result := HFONT(SendMessage(hdp, DTM_GETMCFONT, 0, 0));
  8954. end;
  8955.  
  8956. { IP Address edit control }
  8957.  
  8958. {$EXTERNALSYM MAKEIPRANGE}
  8959. function MAKEIPRANGE(low, high: Byte): LPARAM;
  8960. begin
  8961.   Result := high;
  8962.   Result := (Result shl 8) + low;
  8963. end;
  8964. {$EXTERNALSYM MAKEIPADDRESS}
  8965. function MAKEIPADDRESS(b1, b2, b3, b4: DWORD): LPARAM;
  8966. begin
  8967.   Result := (b1 shl 24) + (b2 shl 16) + (b3 shl 8) + b4;
  8968. end;
  8969. {$EXTERNALSYM FIRST_IPADDRESS}
  8970. function FIRST_IPADDRESS(x: DWORD): DWORD;
  8971. begin
  8972.   Result := (x shr 24) and $FF;
  8973. end;
  8974. {$EXTERNALSYM SECOND_IPADDRESS}
  8975. function SECOND_IPADDRESS(x: DWORD): DWORD;
  8976. begin
  8977.   Result := (x shr 16) and $FF;
  8978. end;
  8979. {$EXTERNALSYM THIRD_IPADDRESS}
  8980. function THIRD_IPADDRESS(x: DWORD): DWORD;
  8981. begin
  8982.   Result := (x shr 8) and $FF;
  8983. end;
  8984. {$EXTERNALSYM FOURTH_IPADDRESS}
  8985. function FOURTH_IPADDRESS(x: DWORD): DWORD;
  8986. begin
  8987.   Result := x and $FF;
  8988. end;
  8989.  
  8990. { Pager control }
  8991.  
  8992. {$EXTERNALSYM Pager_SetChild}
  8993. procedure Pager_SetChild(hwnd: HWND; hwndChild: HWND);
  8994. begin
  8995.   SendMessage(hwnd, PGM_SETCHILD, 0, LPARAM(hwndChild));
  8996. end;
  8997.  
  8998. {$EXTERNALSYM Pager_RecalcSize}
  8999. procedure Pager_RecalcSize(hwnd: HWND);
  9000. begin
  9001.   SendMessage(hwnd, PGM_RECALCSIZE, 0, 0);
  9002. end;
  9003.  
  9004. {$EXTERNALSYM Pager_ForwardMouse}
  9005. procedure Pager_ForwardMouse(hwnd: HWND; bForward: BOOL);
  9006. begin
  9007.   SendMessage(hwnd, PGM_FORWARDMOUSE, WPARAM(bForward), 0);
  9008. end;
  9009.  
  9010. {$EXTERNALSYM Pager_SetBkColor}
  9011. function Pager_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  9012. begin
  9013.   Result := COLORREF(SendMessage(hwnd, PGM_SETBKCOLOR, 0, LPARAM(clr)));
  9014. end;
  9015.  
  9016. {$EXTERNALSYM Pager_GetBkColor}
  9017. function Pager_GetBkColor(hwnd: HWND): COLORREF;
  9018. begin
  9019.   Result := COLORREF(SendMessage(hwnd, PGM_GETBKCOLOR, 0, 0));
  9020. end;
  9021.  
  9022. {$EXTERNALSYM Pager_SetBorder}
  9023. function Pager_SetBorder(hwnd: HWND; iBorder: Integer): Integer;
  9024. begin
  9025.   Result := SendMessage(hwnd, PGM_SETBORDER, 0, iBorder);
  9026. end;
  9027.  
  9028. {$EXTERNALSYM Pager_GetBorder}
  9029. function Pager_GetBorder(hwnd: HWND): Integer;
  9030. begin
  9031.   Result := SendMessage(hwnd, PGM_GETBORDER, 0, 0);
  9032. end;
  9033.  
  9034. {$EXTERNALSYM Pager_SetPos}
  9035. function Pager_SetPos(hwnd: HWND; iPos: Integer): Integer;
  9036. begin
  9037.   Result := SendMessage(hwnd, PGM_SETPOS, 0, iPos);
  9038. end;
  9039.  
  9040. {$EXTERNALSYM Pager_GetPos}
  9041. function Pager_GetPos(hwnd: HWND): Integer;
  9042. begin
  9043.   Result := SendMessage(hwnd, PGM_GETPOS, 0, 0);
  9044. end;
  9045.  
  9046. {$EXTERNALSYM Pager_SetButtonSize}
  9047. function Pager_SetButtonSize(hwnd: HWND; iSize: Integer): Integer;
  9048. begin
  9049.   Result := SendMessage(hwnd, PGM_SETBUTTONSIZE, 0, iSize);
  9050. end;
  9051.  
  9052. {$EXTERNALSYM Pager_GetButtonSize}
  9053. function Pager_GetButtonSize(hwnd: HWND): Integer;
  9054. begin
  9055.   Result := SendMessage(hwnd, PGM_GETBUTTONSIZE, 0,0);
  9056. end;
  9057.  
  9058. {$EXTERNALSYM Pager_GetButtonState}
  9059. function Pager_GetButtonState(hwnd: HWND; iButton: Integer): DWORD;
  9060. begin
  9061.   Result := SendMessage(hwnd, PGM_GETBUTTONSTATE, 0, iButton);
  9062. end;
  9063.  
  9064. {$EXTERNALSYM Pager_GetDropTarget}
  9065. procedure Pager_GetDropTarget(hwnd: HWND; ppdt: Pointer{!!});
  9066. begin
  9067.   SendMessage(hwnd, PGM_GETDROPTARGET, 0, LPARAM(ppdt));
  9068. end;
  9069.  
  9070. { TrackMouseEvent }
  9071.  
  9072. {$EXTERNALSYM _TrackMouseEvent}
  9073. function _TrackMouseEvent;              external cctrl name '_TrackMouseEvent';
  9074.  
  9075. { Flat Scrollbar APIs }
  9076.  
  9077. {$EXTERNALSYM FlatSB_EnableScrollBar}
  9078. function FlatSB_EnableScrollBar;        external cctrl name 'FlatSB_EnableScrollBar';
  9079. {$EXTERNALSYM FlatSB_GetScrollInfo}
  9080. function FlatSB_GetScrollInfo;          external cctrl name 'FlatSB_GetScrollInfo';
  9081. {$EXTERNALSYM FlatSB_GetScrollPos}
  9082. function FlatSB_GetScrollPos;           external cctrl name 'FlatSB_GetScrollPos';
  9083. {$EXTERNALSYM FlatSB_GetScrollProp}
  9084. function FlatSB_GetScrollProp;          external cctrl name 'FlatSB_GetScrollProp';
  9085. {$EXTERNALSYM FlatSB_GetScrollRange}
  9086. function FlatSB_GetScrollRange;         external cctrl name 'FlatSB_GetScrollRange';
  9087. {$EXTERNALSYM FlatSB_SetScrollInfo}
  9088. function FlatSB_SetScrollInfo;          external cctrl name 'FlatSB_SetScrollInfo';
  9089. {$EXTERNALSYM FlatSB_SetScrollPos}
  9090. function FlatSB_SetScrollPos;           external cctrl name 'FlatSB_SetScrollPos';
  9091. {$EXTERNALSYM FlatSB_SetScrollProp}
  9092. function FlatSB_SetScrollProp;          external cctrl name 'FlatSB_SetScrollProp';
  9093. {$EXTERNALSYM FlatSB_SetScrollRange}
  9094. function FlatSB_SetScrollRange;         external cctrl name 'FlatSB_SetScrollRange';
  9095. {$EXTERNALSYM FlatSB_ShowScrollBar}
  9096. function FlatSB_ShowScrollBar;          external cctrl name 'FlatSB_ShowScrollBar';
  9097. {$EXTERNALSYM InitializeFlatSB}
  9098. function InitializeFlatSB;              external cctrl name 'InitializeFlatSB';
  9099. {$EXTERNALSYM UninitializeFlatSB}
  9100. procedure UninitializeFlatSB;           external cctrl name 'UninitializeFlatSB';
  9101.  
  9102. end.
  9103.